Vous pouvez faire un post/get en utilisant une bibliothèque qui vous permet d' utiliser HttpClient avec fortement typées rappels.
Les données et l'erreur sont disponibles directement via ces rappels.
La bibliothèque est appelée angulaires-extended-http-client.
angulaire-extended-http-bibliothèque client sur GitHub
angulaire-extended-http-bibliothèque client sur NGP
Très facile à utiliser.
L'approche traditionnelle
Dans l'approche traditionnelle, vous revenez Observables<HttpResponse<
T>
> à partir de l'API de Service. Ceci est lié HttpResponse.
Avec cette approche, vous devez utiliser .s'abonner(x => ...) dans le reste de votre code.
Cela crée un couplage étroit entre la couche http , et le reste de votre code.
Fortement typées rappel approche
Vous ne vous occupez avec vos Modèles dans ces fortement typées rappels.
Par conséquent, Le reste de votre code qui ne sait à propos de vos Modèles.
Exemple d'utilisation
Fortement typées rappels sont
Succès:
- IObservable<
T
>
- IObservableHttpResponse
- IObservableHttpCustomResponse<
T
>
Échec:
- IObservableError<
TError
>
- IObservableHttpError
- IObservableHttpCustomError<
TError
>
Ajouter le package de votre projet et dans votre application module
import { HttpClientExtModule } from 'angular-extended-http-client';
et dans le @NgModule importations
imports: [
.
.
.
HttpClientExtModule
],
Vos Modèles
export class SearchModel {
code: string;
}
//Normal response returned by the API.
export class RacingResponse {
result: RacingItem[];
}
//Custom exception thrown by the API.
export class APIException {
className: string;
}
Votre Service
Dans votre Service, il vous suffit de créer params avec ces types de rappel.
Ensuite, passez-les à la HttpClientExt's la méthode get.
import { Injectable, Inject } from '@angular/core'
import { SearchModel, RacingResponse, APIException } from '../models/models'
import { HttpClientExt, IObservable, IObservableError, ResponseType, ErrorType } from 'angular-extended-http-client';
.
.
@Injectable()
export class RacingService {
//Inject HttpClientExt component.
constructor(private client: HttpClientExt, @Inject(APP_CONFIG) private config: AppConfig) {
}
//Declare params of type IObservable<T> and IObservableError<TError>.
//These are the success and failure callbacks.
//The success callback will return the response objects returned by the underlying HttpClient call.
//The failure callback will return the error objects returned by the underlying HttpClient call.
searchRaceInfo(model: SearchModel, success: IObservable<RacingResponse>, failure?: IObservableError<APIException>) {
let url = this.config.apiEndpoint;
this.client.post<SearchModel, RacingResponse>(url, model,
ResponseType.IObservable, success,
ErrorType.IObservableError, failure);
}
}
Votre Composant
Dans votre Composant, votre Service est injecté et de la searchRaceInfo API appelée comme indiqué ci-dessous.
search() {
this.service.searchRaceInfo(this.searchModel, response => this.result = response.result,
error => this.errorMsg = error.className);
}
À la fois, de réponse et d'erreur renvoyé dans les rappels sont fortement typés. Par exemple. la réponse est de type RacingResponse et l' erreur est APIException.