¿Cuál usar para crear un servicio web simulado para probar la aplicación Angular 4?
angular
angular-httpclient
angular2-http
Aiyoub Amini
fuente
fuente
Respuestas:
Use la
HttpClient
clase fromHttpClientModule
si está usando Angular 4.3.xy superior:Es una versión mejorada
http
del@angular/http
módulo con las siguientes mejoras:Puede leer cómo funciona en la guía de Insider sobre interceptores y la mecánica de HttpClient en Angular .
En adelante, el antiguo cliente http quedará en desuso. Aquí están los enlaces al mensaje de confirmación y los documentos oficiales .
También preste atención a que se inyectó http antiguo utilizando el
Http
token de clase en lugar del nuevoHttpClient
:Además, las nuevas
HttpClient
parecen requerirsetslib
en tiempo de ejecución, por lo que debe instalarlonpm i tslib
y actualizarlosystem.config.js
si está usandoSystemJS
:Y necesita agregar otra asignación si usa SystemJS:
fuente
node_modules
carpeta y ejecutar denpm install
nuevo'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
No quiero ser repetitivo, pero solo para resumir de otra manera (características agregadas en el nuevo HttpClient):
Escribí un artículo, donde cubrí la diferencia entre el antiguo "http" y el nuevo "HttpClient". El objetivo era explicarlo de la manera más fácil posible.
Simplemente sobre el nuevo HttpClient en Angular
fuente
Esta es una buena referencia, me ayudó a cambiar mis solicitudes http a httpClient
https://blog.hackages.io/angular-http-httpclient-same-but-different-86a50bbcc450
Compara los dos en términos de diferencias y da ejemplos de código.
Estas son solo algunas diferencias con las que traté mientras cambiaba los servicios a httpclient en mi proyecto (tomando prestado del artículo que mencioné):
Importador
Solicitar y analizar la respuesta:
@ angular / http
@ angular / común / http
Nota: ya no tiene que extraer los datos devueltos explícitamente; de forma predeterminada, si los datos que obtiene son de tipo JSON, entonces no tiene que hacer nada adicional.
Pero, si necesita analizar cualquier otro tipo de respuesta como texto o blob, asegúrese de agregar el
responseType
en la solicitud. Al igual que:Hacer la solicitud GET HTTP con la
responseType
opción:Agregar interceptor
También utilicé interceptores para agregar el token para mi autorización a cada solicitud:
Esta es una buena referencia: https://offering.solutions/blog/articles/2017/07/19/angular-2-new-http-interface-with-interceptors/
al igual que:
Es una muy buena actualización!
fuente
Hay una biblioteca que le permite usar HttpClient con devoluciones de llamada fuertemente tipadas .
Los datos y el error están disponibles directamente a través de estas devoluciones de llamada.
Cuando usa HttpClient con Observable, debe usar .subscribe (x => ...) en el resto de su código.
Esto se debe a observable <
HttpResponse
<T
>> está ligado a HttpResponse .Esta combina estrechamente la capa http con el resto de su código .
Esta biblioteca encapsula la parte .subscribe (x => ...) y expone solo los datos y el error a través de sus Modelos.
Con devoluciones de llamada fuertemente tipadas, solo tiene que lidiar con sus Modelos en el resto de su código.
La biblioteca se llama angular-extended-http-client .
biblioteca angular-extended-http-client en GitHub
biblioteca angular-extended-http-client en NPM
Muy facil de usar.
Uso de la muestra
Las devoluciones de llamada fuertemente tipadas son
Éxito:
T
>T
>Fracaso:
TError
>TError
>Agregue paquete a su proyecto y en su módulo de aplicación
y en las importaciones @NgModule
Sus modelos
Tu servicio
En su Servicio, solo crea parámetros con estos tipos de devolución de llamada.
Luego, páselos al método get de HttpClientExt .
Su componente
En su Componente, se inyecta su Servicio y se llama a la API getRaceInfo como se muestra a continuación.
Tanto la respuesta como el error devuelto en las devoluciones de llamada están fuertemente tipados. P.ej. la respuesta es tipo RacingResponse y el error es APIException .
Solo trata con sus modelos en estas devoluciones de llamada fuertemente tipadas.
Por lo tanto, el resto de su código solo conoce sus Modelos.
Además, aún puede usar la ruta tradicional y devolver Observable <
HttpResponse<
T>
> desde la API de servicio.fuente
HttpClient es una nueva API que viene con 4.3, ha actualizado las API con soporte para eventos de progreso, deserialización json por defecto, interceptores y muchas otras características excelentes. Ver más aquí https://angular.io/guide/http
Http es la API más antigua y eventualmente quedará en desuso.
Dado que su uso es muy similar para tareas básicas, recomendaría usar HttpClient ya que es la alternativa más moderna y fácil de usar.
fuente