"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como personalizar respostas 404 (não encontradas) no Go with httprouter?

Como personalizar respostas 404 (não encontradas) no Go with httprouter?

Publicado em 01/11/2024
Navegar:687

How to Customize 404 (Not Found) Responses in Go with httprouter?

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.

Tutorial mais recente Mais>

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