Angular HttpCliente, request GET com headers, não funciona
Bom dia, estou desenvolvendo um cliente no qual não tenho acesso ao backend, na documentação preciso passar parametros no Header, de uma requisição GET
quando executo, vai sem os headers que passei
const head= new HttpHeaders()
.append('accept', 'application/json')
.append('content-type', 'application/json')
.append('param1', 'valor1')
.append('param2', 'valor2');
return this.http.get<category[]>('https://api.skyhub.com.br/categories',{headers:head} )
.pipe(
tap(return=> { this.log(`fetched Categorias`) }),
catchError(this.handleError('getCategorias', []))
);
.append('accept', 'application/json')
.append('content-type', 'application/json')
.append('param1', 'valor1')
.append('param2', 'valor2');
return this.http.get<category[]>('https://api.skyhub.com.br/categories',{headers:head} )
.pipe(
tap(return=> { this.log(`fetched Categorias`) }),
catchError(this.handleError('getCategorias', []))
);
quando executo, vai sem os headers que passei
Inditec
Curtidas 0
Respostas
Kelvin Andrade
01/12/2017
Olá Inditec,
Qual a versão do Angular que está utilizando?
Ali próximo ao "tap" me parece conter um erro, você está utilizando a palavra reservada "return" para o nome de um parâmetro da função
Qual a versão do Angular que está utilizando?
const head= new HttpHeaders() .append('accept', 'application/json') .append('content-type', 'application/json') .append('param1', 'valor1') .append('param2', 'valor2'); return this.http.get<category[]>('https://api.skyhub.com.br/categories',{headers:head} ) .pipe( tap(return=> { this.log(`fetched Categorias`) }), catchError(this.handleError('getCategorias', [])) );
Ali próximo ao "tap" me parece conter um erro, você está utilizando a palavra reservada "return" para o nome de um parâmetro da função
GOSTEI 0
Inditec
01/12/2017
Obrigado pela resposta, segue a versão:
Angular CLI: 1.6.2 Node: 8.9.3 OS: win32 x64 Angular: 5.1.2 ... animations, common, compiler, compiler-cli, core, forms ... http, language-service, platform-browser ... platform-browser-dynamic, platform-server, router @angular/cli: 1.6.2 @angular-devkit/build-optimizer: 0.0.36 @angular-devkit/core: 0.0.22 @angular-devkit/schematics: 0.0.42 @ngtools/json-schema: 1.1.0 @ngtools/webpack: 1.9.2 @schematics/angular: 0.1.11 @schematics/schematics: 0.0.11 typescript: 2.6.2 webpack: 3.10.0
GOSTEI 0
Kelvin Andrade
01/12/2017
Verifique se os imports estão corretos. O pacote '@angular/http' foi depreciado!
Faça um teste para ver se o header está sendo atribuído corretamente dando um console na linha abaixo.
Obs: Por padrão, a versão 5 espera que os dados sejam JSON, então não é necessário passar "content-type" e "accept" como parâmetro.
Importante mencionar também que o header é imutável, sempre que utilizar a função append, é retornado um novo header, ele não altera a variável head, mesmo se não utilizasse const para declarar;
import { HttpClient } from '@angular/common/http';
Faça um teste para ver se o header está sendo atribuído corretamente dando um console na linha abaixo.
const head= new HttpHeaders().append('param1', 'valor1') .append('param2', 'valor2'); let param = head.get('param1'); console.log(param);
Obs: Por padrão, a versão 5 espera que os dados sejam JSON, então não é necessário passar "content-type" e "accept" como parâmetro.
Importante mencionar também que o header é imutável, sempre que utilizar a função append, é retornado um novo header, ele não altera a variável head, mesmo se não utilizasse const para declarar;
let head= new HttpHeaders(); head.append('param1', 'valor1'); let param = head.get('param1'); console.log(param); // O resultado é vazio.
GOSTEI 0