Angular HttpCliente, request GET com headers, não funciona

01/12/2017

0

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
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', []))
);


quando executo, vai sem os headers que passei
Inditec

Inditec

Responder

Posts

29/12/2017

Kelvin Andrade

Olá Inditec,

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
Responder

02/01/2018

Inditec

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

Responder

03/01/2018

Kelvin Andrade

Verifique se os imports estão corretos. O pacote '@angular/http' foi depreciado!

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar