Qual usar para criar um serviço da web simulado para testar o aplicativo Angular 4?
angular
angular-httpclient
angular2-http
Aiyoub Amini
fonte
fonte
Respostas:
Use a
HttpClient
classe fromHttpClientModule
se você estiver usando o Angular 4.3.xe acima:É uma versão atualizada
http
do@angular/http
módulo from , com as seguintes melhorias:Você pode ler sobre como ele funciona no guia do Insider em interceptores e na mecânica HttpClient no Angular .
No futuro, o cliente http antigo será descontinuado. Aqui estão os links para a mensagem de confirmação e os documentos oficiais .
Observe também que o http antigo foi injetado usando o
Http
token de classe em vez do novoHttpClient
:Além disso, novas
HttpClient
parecem exigirtslib
em tempo de execução, portanto, você deve instalá-lonpm i tslib
e atualizarsystem.config.js
se estiver usandoSystemJS
:E você precisa adicionar outro mapeamento se usar o SystemJS:
fonte
node_modules
pasta e executenpm install
novamente'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
Não queira ser repetitivo, mas apenas resumir de outra maneira (recursos adicionados no novo HttpClient):
Escrevi um artigo, onde abordava a diferença entre o antigo "http" e o novo "HttpClient". O objetivo era explicá-lo da maneira mais fácil possível.
Simplesmente sobre o novo HttpClient no Angular
fonte
Esta é uma boa referência, pois me ajudou a mudar minhas solicitações http para httpClient
https://blog.hackages.io/angular-http-httpclient-same-but-different-86a50bbcc450
Ele compara os dois em termos de diferenças e fornece exemplos de código.
Estas são apenas algumas diferenças que eu lidei ao mudar os serviços para httpclient no meu projeto (tomando emprestado o artigo que mencionei):
Importando
Solicitando e analisando resposta:
@ angular / http
@ angular / comum / http
Nota: Você não precisa mais extrair os dados retornados explicitamente; por padrão, se os dados retornados forem do tipo JSON, não será necessário fazer nada extra.
Mas, se você precisar analisar qualquer outro tipo de resposta, como texto ou blob, adicione-o
responseType
na solicitação. Igual a:Fazendo a solicitação HTTP GET com a
responseType
opção:Adicionando Interceptor
Também usei interceptores para adicionar o token para minha autorização a cada solicitação:
Esta é uma boa referência: https://offering.solutions/blog/articles/2017/07/19/angular-2-new-http-interface-with-interceptors/
igual a:
É uma atualização bastante agradável!
fonte
Existe uma biblioteca que permite que você use HttpClient com retornos de chamada fortemente tipados .
Os dados e o erro estão disponíveis diretamente através desses retornos de chamada.
Ao usar o HttpClient com o Observable, você deve usar .subscribe (x => ...) no restante do seu código.
Isso ocorre porque o Observable
HttpResponse
<<T
>> está vinculado ao HttpResponse .Isso une firmemente a camada http com o restante do seu código .
Esta biblioteca encapsula a parte .subscribe (x => ...) e expõe apenas os dados e erros nos seus modelos.
Com retornos de chamada fortemente digitados, você só precisa lidar com seus modelos no restante do seu código.
A biblioteca é chamada angular-extended-http-client .
biblioteca angular-extended-http-client no GitHub
biblioteca angular-extended-http-client no NPM
Muito fácil de usar.
Uso da amostra
Os retornos de chamada fortemente digitados são
Sucesso:
T
>T
>Falha:
TError
>TError
>Adicione um pacote ao seu projeto e no seu módulo de aplicativo
e nas importações @NgModule
Seus modelos
Seu serviço
No seu serviço, você acabou de criar parâmetros com esses tipos de retorno de chamada.
Em seguida, passe-os para o método get do HttpClientExt .
Seu componente
No seu componente, seu serviço é injetado e a API getRaceInfo é chamada conforme mostrado abaixo.
Tanto a resposta quanto o erro retornado nos retornos de chamada são fortemente digitados. Por exemplo. resposta é do tipo RacingResponse e erro é APIException .
Você lida apenas com seus modelos nesses retornos de chamada fortemente tipados.
Portanto, o restante do seu código conhece apenas seus modelos.
Além disso, você ainda pode usar a rota tradicional e retornar Observable <
HttpResponse<
T>
> da API de serviço.fonte
O HttpClient é uma nova API que veio com a 4.3, que atualizou as APIs com suporte para eventos de progresso, desserialização de json por padrão, Interceptores e muitos outros ótimos recursos. Veja mais aqui https://angular.io/guide/http
Http é a API mais antiga e será descontinuada.
Como o uso deles é muito semelhante para tarefas básicas, eu recomendaria o uso do HttpClient, pois é a alternativa mais moderna e fácil de usar.
fonte