Maison  >  Article  >  développement back-end  >  Comment gérer les erreurs 404 avec des gestionnaires personnalisés dans httprouter ?

Comment gérer les erreurs 404 avec des gestionnaires personnalisés dans httprouter ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 03:47:30716parcourir

How to Handle 404 Errors with Custom Handlers in httprouter?

Gestion des erreurs 404 avec les gestionnaires personnalisés de httprouter

Dans une API HTTP construite avec httprouter, la gestion des erreurs 404 (introuvables) nécessite un gestionnaire personnalisé . La documentation mentionne cette possibilité, mais elle ne fournit pas d'instructions explicites sur la façon d'en créer un.

Configuration d'un gestionnaire personnalisé

Pour gérer manuellement les erreurs 404, suivez ces étapes :

  1. Définissez une fonction avec la signature suivante :

    <code class="go">func(http.ResponseWriter, *http.Request)</code>
  2. Convertissez la fonction en un http.Handler à l'aide du http. Fonction d'assistance HandlerFunc().

    <code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/plain; charset=utf-8")
        w.WriteHeader(http.StatusNotFound) // StatusNotFound = 404
        w.Write([]byte("My own Not Found handler."))
    
        // or with more detailed message
        w.Write([]byte(" The page you requested could not be found."))
    }</code>
  3. Attribuez le gestionnaire MyNotFound au champ NotFound du httprouter :

    <code class="go">var router *httprouter.Router = ... // Your router value
    router.NotFound = http.HandlerFunc(MyNotFound)</code>

Invocation manuelle du gestionnaire personnalisé

Dans vos gestionnaires, vous pouvez appeler manuellement le gestionnaire MyNotFound, si nécessaire, en passant le ResponseWriter et *Request :

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    exists := ... // Find out if requested resource is valid and available
    if !exists {
        MyNotFound(w, r) // Pass ResponseWriter and Request
        // Or via the Router:
        // router.NotFound(w, r)
        return
    }
    // Resource exists, serve it
    // ...
}</code>

En implémentant ces derniers étapes, vous pouvez gérer efficacement les erreurs 404 dans votre API basée sur httprouter et personnaliser le comportement selon vos besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn