0
respostas

Problema com a condicional do header 'Accept'

Não é bem uma dúvida, mas sim uma ajuda para quem passar pelo mesmo problema que eu. Da forma como a lógica foi implementada na solução da atividade, a resposta sempre vai retornar 406, mesmo que a requisição contenha o header de accept como application/json ou */*. Isso porque a forma como a lógica foi feita implica que o header precisa conter ambas as formas permitidas ao mesmo tempo, e não uma das duas. Imagine que você envie o header com o valor de */*, o indexOf dele vai retornar 0 normalmente, mas a verificação para application/json vai retornar -1, o que fará entrar dentro do if, mesmo que a requisição esteja válida.

Para consertar, basta trocar o operador de ou por e, e então a única forma de retornar 406 é caso nenhuma das formas permitidas seja encontrada no header.

Como estava: if (accept.indexOf(‘application/json’) === -1 || accept.indexOf(‘*/*’) === -1)

Como pode ser ajustado: if (accept.indexOf(‘application/json’) === -1 && accept.indexOf(‘*/*’) === -1)

Espero ter ajudado alguém com o apontamento :)