Yang mana yang digunakan untuk membangun layanan web tiruan untuk menguji aplikasi Angular 4?
angular
angular-httpclient
angular2-http
Aiyoub Amini
sumber
sumber
Jawaban:
Gunakan
HttpClient
kelas dariHttpClientModule
jika Anda menggunakan Angular 4.3.x dan di atas:Ini adalah versi yang ditingkatkan
http
dari@angular/http
modul dengan peningkatan berikut:Anda dapat membaca tentang cara kerjanya di panduan orang dalam tentang pencegat dan mekanika HttpClient di Angular .
Memajukan klien http lama akan ditinggalkan. Berikut adalah tautan ke pesan komit dan dokumen resmi .
Perhatikan juga bahwa http lama disuntikkan menggunakan
Http
token kelas, bukan yang baruHttpClient
:Selain itu,
HttpClient
tampaknya baru diperlukantslib
dalam runtime, jadi Anda harus menginstalnyanpm i tslib
dan memperbaruisystem.config.js
jika Anda menggunakanSystemJS
:Dan Anda perlu menambahkan pemetaan lain jika Anda menggunakan SystemJS:
sumber
node_modules
folder dan jalankannpm install
lagi'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
Tidak ingin berulang-ulang, tetapi hanya untuk meringkas dengan cara lain (fitur ditambahkan di HttpClient baru):
Saya menulis sebuah artikel, di mana saya membahas perbedaan antara "http" lama dan "HttpClient" baru. Tujuannya adalah menjelaskannya dengan cara termudah.
Cukup tentang HttpClient baru di Angular
sumber
Ini adalah referensi yang bagus, ini membantu saya mengalihkan permintaan http saya ke httpClient
https://blog.hackages.io/angular-http-httpclient-same-but-different-86a50bbcc450
Ini membandingkan keduanya dalam hal perbedaan dan memberikan contoh kode.
Ini hanya beberapa perbedaan yang saya tangani saat mengubah layanan ke httpclient di proyek saya (meminjam dari artikel yang saya sebutkan):
Pengimporan
Meminta dan memilah respons:
@ angular / http
@ angular / common / http
Catatan: Anda tidak perlu lagi mengekstrak data yang dikembalikan secara eksplisit; secara default, jika data yang Anda dapatkan adalah tipe JSON, maka Anda tidak perlu melakukan apa pun tambahan.
Tetapi, jika Anda perlu menguraikan jenis respons lain seperti teks atau gumpalan, maka pastikan Anda menambahkan
responseType
dalam permintaan. Seperti itu:Membuat permintaan GET HTTP dengan
responseType
opsi:Menambahkan Interceptor
Saya juga menggunakan pencegat untuk menambahkan token untuk otorisasi saya untuk setiap permintaan:
Ini adalah referensi yang bagus: https://offering.solutions/blog/articles/2017/07/19/angular-2-new-http-interface-with-interceptors/
seperti itu:
Ini peningkatan yang cukup bagus!
sumber
Ada perpustakaan yang memungkinkan Anda untuk menggunakan HttpClient dengan panggilan balik yang sangat diketik .
Data dan kesalahan tersedia langsung melalui panggilan balik ini.
Ketika Anda menggunakan HttpClient dengan Observable, Anda harus menggunakan .scribe (x => ...) di sisa kode Anda.
Ini karena Observable
HttpResponse
<<T
>> terkait dengan HttpResponse .Ini erat pasangan yang http lapisan dengan sisa kode Anda .
Pustaka ini merangkum bagian .scribe (x => ...) dan hanya memaparkan data dan kesalahan melalui Model Anda.
Dengan panggilan balik yang sangat diketik, Anda hanya perlu berurusan dengan Model Anda di sisa kode Anda.
Perpustakaan disebut angular-extended-http-client .
pustaka angular-extended-http-client di GitHub
pustaka sudut-diperpanjang-http-klien pada NPM
Sangat mudah digunakan.
Penggunaan sampel
Callback yang sangat diketik adalah
Keberhasilan:
T
>T
>Kegagalan:
TError
>TError
>Tambahkan paket ke proyek Anda dan di modul aplikasi Anda
dan dalam impor @NgModule
Model Anda
Layanan Anda
Di Layanan Anda, Anda hanya membuat params dengan jenis-jenis panggilan balik ini.
Kemudian, sampaikan ke metode get HttpClientExt .
Komponen Anda
Di Komponen Anda, Layanan Anda disuntikkan dan API getRaceInfo disebut seperti yang ditunjukkan di bawah ini.
Baik, respons dan kesalahan yang dikembalikan dalam callback diketik dengan kuat. Misalnya. responsnya adalah tipe RacingResponse dan kesalahannya adalah APIException .
Anda hanya berurusan dengan Model Anda dalam panggilan balik yang sangat diketik ini.
Oleh karena itu, sisa kode Anda hanya tahu tentang Model Anda.
Selain itu, Anda masih dapat menggunakan rute tradisional dan mengembalikan <
HttpResponse<
T>
> yang Dapat Diamati dari API Layanan.sumber
HttpClient adalah API baru yang hadir dengan 4.3, telah memperbarui API dengan dukungan untuk acara kemajuan, deserialisasi json secara default, Interceptors dan banyak fitur hebat lainnya. Lihat lebih lanjut di sini https://angular.io/guide/http
Http adalah API yang lebih lama dan pada akhirnya akan ditinggalkan.
Karena penggunaannya sangat mirip untuk tugas-tugas dasar saya akan menyarankan menggunakan HttpClient karena merupakan alternatif yang lebih modern dan mudah digunakan.
sumber