Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Obter token do body

Olé pessoal, tudo bem?!

Seguinte, fiz todos os procedimentos e utilizei a API do professor e funcionou certinho. Porém estou usando uma API externa e o retorno dela está sendo no body e não no header como podem ver nos console.log abaixo:

Print do Headers no Console

Ao tentar obter o valor através do "res.headers.get('x-access-token')" ele retorna null, afinal o token não esta no headers.

Para solucionar essa questão fiz o seguinte, segue meu código abaixo:

Imagem de linhas de código Usando o map (substitutindo o tap) eu converti a resposta do body em uma string no formato Json com "stringify" e convert para um Objeto Json com o "parse". Com isso, tive acesso ao valor que precisava dentro do objeto Json, neste caso o token.

Funcionou bem, mas gostaria de uma opnião se é uma solução viável ou se possui uma maneira mais correta ou adequada de se obter esta valor com resposta no body.

Muito obrigado"

2 respostas
solução!

Olá, Alan! Tudo bem?

Desculpa a demora!

Acredito que você não precise fazer o JSON.parse(JSON.stringify(res.body)). Por padrão, o res.body é lido como JSON e você pode acessá-lo nomralmente. Como você não vai acessar os headers, pode remover o observe: 'response, e dessa forma também, o res já será o body ao invés da requisição inteira.

Ficaria:

return this.http.post(Constants.baseServer + "auth", dataUser, { headers: headers })
    .pipe(map(res => {
        const token = res.token;
        this.tokenService.setToken(token);
    }));

Bons estudos!

Olá Leonardo!

Muito obrigado pelo retorno, fiz os testes aqui e realmente foi uma boa solução.

Obrigado!