Este artigo irá levá-lo a entender o módulo HttpClientModule em angular e apresentar o método de solicitação, parâmetros de solicitação, conteúdo de resposta, interceptores, Angular Proxy e outros conhecimentos relacionados. Espero que seja útil para você!
Este módulo é usado para enviar solicitações Http
, e os métodos usados para enviar solicitações retornam objetos Observable
. [Tutoriais relacionados recomendados: "tutorial angular"]
1), apresente o módulo HttpClientModule
//app.module.ts importar {httpClientModule} de '@angular/common/http'; importações: [ httpClientModule ]
2) Injetar o objeto de instância de serviço HttpClient para enviar solicitações
//app.component.ts importar { HttpClient } de '@angular/common/http'; classe de exportação AppComponent { construtor (http privado: HttpClient) {} }
3), enviar solicitação
importar {HttpClient} de "@angular/common/http" classe de exportação AppComponent implementa OnInit { construtor (http privado: HttpClient) {} ngOnInit() { this.getUsers().subscribe(console.log) } getUsuários() { retorne isto.http.get("https://jsonplaceholder.typicode.com/users") } }
this.http.get(url [, opções]); this.http.post(url, dados [, opções]); this.http.delete(url [, opções]); this.http.put(url, dados [, opções]);
this.http.get<Post[]>('/getAllPosts') .subscribe(resposta => console.log(resposta))
1. Classe HttpParams
exportar declarar classe HttpParams { construtor(opções?: HttpParamsOptions); tem(parâmetro: string): booleano; get (parâmetro: string): string nulo; getAll(parâmetro: string): string[] | chaves(): string[]; anexar (parâmetro: string, valor: string): HttpParams; set(parâmetro: string, valor: string): HttpParams; delete(parâmetro: string, valor?: string): HttpParams; toString(): string; }
2. Interface HttpParamsOptions
declarar interface HttpParamsOptions { fromString?: string; doObjeto?: { [parâmetro: string]: string | ReadonlyArray<string>; }; codificador?: HttpParameterCodec; }
3. Exemplos de uso
importar { HttpParams } de '@angular/common/http'; deixe params = new HttpParams({fromObject: {nome: "zhangsan", idade: "20"}}) params = params.append("sexo", "masculino") deixe params = new HttpParams({ fromString: "name=zhangsan&age=20"})
A criação de campos de cabeçalho de solicitação requer o uso da classe HttpHeaders. Existem vários métodos para operar cabeçalhos de solicitação no objeto de instância de classe.
exportar declarar classe HttpHeaders { construtor(cabeçalhos?: string | { [nome: string]: string | string[]; }); tem(nome: string): boolean; get(nome: string): string | nulo; chaves(): string[]; getAll(nome: string): string[] | acrescentar(nome: string, valor: string | string[]): HttpHeaders; set(nome: string, valor: string | string[]): HttpHeaders; delete(nome: string, valor?: string | string[]): HttpHeaders; }
deixe cabeçalhos = new HttpHeaders({ teste: "Olá" })
declare o tipo HttpObserve = 'corpo' | //a resposta lê o corpo completo da resposta //o corpo lê os dados retornados pelo servidor
isto.http.get( "https://jsonplaceholder.typicode.com/users", {observe: "corpo"} .subscribe(console.log)
Os interceptadores são uma forma de capturar e modificar globalmente solicitações e respostas HTTP em aplicativos Angular. (Token, Erro)
O interceptador interceptará apenas solicitações feitas usando o módulo HttpClientModule.
ng g interceptor <name>
6.1 Solicitar interceptação
@Injetável() classe de exportação AuthInterceptor implementa HttpInterceptor { construtor() {} //Método de interceptação intercept( // desconhecido especifica o tipo de corpo da solicitação (corpo): HttpRequest<unknown>, próximo: HttpHandler // desconhecido especifica o tipo de conteúdo da resposta (corpo)): Observable<HttpEvent<unknown>> { // Clone e modifique o cabeçalho da solicitação const req = request.clone({ setHeaders: { Autorização: "Portador xxxxxxx" } }) // Passa o cabeçalho da solicitação modificado de volta para o aplicativo por meio da função de retorno de chamada return next.handle(req) } }
6.2 Interceptação de resposta
@Injetável() classe de exportação AuthInterceptor implementa HttpInterceptor { construtor() {} //Método de interceptação intercept( solicitação: HttpRequest<desconhecido>, próximo: HttpHandler ): Observável<qualquer> { retorne next.handle(solicitação).pipe( tente novamente (2), catchError((erro: HttpErrorResponse) => throwError(erro)) ) } }
6.3 Injeção do interceptor
importar { AuthInterceptor } de "./auth.interceptor" importar {HTTP_INTERCEPTORS} de "@angular/common/http" @NgModule({ provedores: [ { fornecer: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: verdadeiro } ] })
1. Crie o arquivo proxy.conf.json no diretório raiz do projeto e adicione o seguinte código
{ "/api/*": { "destino": "http://localhost:3070", "seguro": falso, "changeOrigin": verdadeiro } }
/api/*: Solicitações começando com /api feitas na aplicação passam por este proxy
alvo: URL do lado do servidor
seguro: se o protocolo da URL do servidor for https, este item precisa ser verdadeiro
changeOrigin: Se o servidor não for localhost, este item precisa ser verdadeiro
2. Especifique o arquivo de configuração do proxy (método 1)
"roteiros": { "start": "ng serve --proxy-config proxy.conf.json", }
3. Especifique o arquivo de configuração do proxy (método 2)
"servir": { "opções": { "proxyConfig": "proxy.conf.json" },
Este módulo é usado para enviar solicitações Http
, e os métodos usados para enviar solicitações retornam objetos Observable
.