Personalizando "Not Found" (404) Tratamento com httprouter
Ao desenvolver uma API usando a biblioteca httprouter, tratamento 404 (Not Found) respostas é uma tarefa crucial. Embora a documentação mencione a possibilidade de lidar com 404s manualmente, implementar um manipulador personalizado pode ser um desafio.
Compreendendo o campo NotFound
A estrutura httprouter.Router inclui um campo chamado NotFound, que é do tipo http.Handler. Isso significa que o valor para NotFound deve implementar o método ServeHTTP presente na interface http.Handler.
Criando um manipulador "Not Found" personalizado
Para definir o seu próprio manipulador personalizado, você pode criar uma função com uma assinatura correspondente ao método ServeHTTP:
func MyNotFound(w http.ResponseWriter, r *http.Request) {
// ... Custom handling logic
}
Convertendo a função em um manipulador
Para converter sua função em um valor que implemente a interface http.Handler, você pode usar o auxiliar http.HandlerFunc() função:
router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)
Invocação manual do manipulador personalizado
Se você deseja chamar seu manipulador personalizado manualmente de dentro de outros manipuladores, forneça o manipulador com um ResponseWriter e um *Request:
func ResourceHandler(w http.ResponseWriter, r *http.Request) {
// ... Code to determine resource validity
if !resourceExists {
MyNotFound(w, r) // Manual invocation of custom handler
return
}
// ... Resource exists, serve it normally
}
Conclusão
Seguindo essas etapas, você pode personalizar efetivamente o processo de tratamento de "Não encontrado" em sua API baseada em httprouter, garantindo que os usuários recebam respostas apropriadas quando tentando acessar recursos inexistentes.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3