Olá,
Implementei o método da rota de produtos roteador.head('/:id', async (requisicao, resposta, proximo) => {...
que tem a função de retornar informações no cabeçalho da resposta, e este método fica depois do método roteador.get('/:id', async (requisicao, resposta, proximo) => {..
e tem a função de retornar dados no cabeçalho e informações no corpo da resposta.
Porém ao tentar fazer uma chamada pelo Postman para este método roteador.head
, o Express executa o método roteador.get
e não executa o método roteador.head
.
Se eu inverto a ordem dos método, ou seja, declarando primeiro o método roteador.head
e depois o método roteador.get
, então o Express executa o método roteador.head
normalmente, mas aí quando tento executar uma chamada pelo postam para o método roteador.get
recebo um 404.
meu código:
roteador.get('/:id', async (requisicao, resposta, proximo) => {
try {
const dados = {
id: requisicao.params.id,
fornecedor: requisicao.fornecedor.id
}
const produto = new ProdutoModel(dados)
await produto.carregar()
const serializador = new SerializadorProduto(
resposta.getHeader('Content-Type'),
['preco', 'estoque', 'fornecedor', 'dataCriacao', 'dataAtualizacao', 'versao']
)
resposta.set('ETag', produto.versao)
const timestamp = (new Date(produto.dataAtualizacao)).getTime()
resposta.set('Last-Modified', timestamp)
resposta.status(202) // obs. status 202 só para fins de teste
resposta.send(
serializador.serializar(produto)
)
} catch (error) {
console.log(' \n>>> ', error, '\n');
proximo(error)
}
})
roteador.head('/:id', async (requisicao, resposta, proximo) => {
try {
const dados = {
id: requisicao.params.id,
fornecedor: requisicao.fornecedor.id
}
const produto = new ProdutoModel(dados)
await produto.carregar()
resposta.set('ETag', produto.versao)
const timestamp = (new Date(produto.dataAtualizacao)).getTime()
resposta.set('Last-Modified', timestamp)
resposta.status(205) // obs. status 205 só para fins de teste...
resposta.end()
} catch (error) {
proximo(error)
}
})
Minha chamada via Postman para o método HEAD mas executando o método GET no Express
Alguém sabe qual pode ser o motivo?