Maison > développement back-end > Golang > le corps du texte

Comment personnaliser la gestion des erreurs 404 dans httprouter avec des gestionnaires personnalisés ?

Susan Sarandon
Libérer: 2024-10-25 19:02:02
original
620 Les gens l'ont consulté

How to Customize 404 Error Handling in httprouter with Custom Handlers?

Gestion des 404 dans httprouter avec des gestionnaires personnalisés

httprouter est un middleware de routage populaire pour Golang, qui vous permet d'enregistrer des gestionnaires personnalisés pour des itinéraires ou des modèles spécifiques. Dans les cas où une route ou une ressource est introuvable, vous souhaiterez peut-être gérer vous-même ces réponses 404 Not Found.

Comprendre le champ NotFound

Le type httprouter.Router a un champ appelé NotFound, qui est un http.Handler. Cela signifie que vous pouvez attribuer un gestionnaire personnalisé à ce champ pour gérer 404 réponses.

Création d'un gestionnaire NotFound personnalisé

Pour créer un gestionnaire NotFound personnalisé, vous devez définir une fonction avec la signature :

func(http.ResponseWriter, *http.Request)
Copier après la connexion

Vous pouvez ensuite convertir cette fonction en http.Handler à l'aide de la fonction d'assistance http.HandlerFunc.

Exemple d'utilisation

Voici un exemple de la façon dont vous peut définir un gestionnaire NotFound personnalisé :

<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)
    w.Write([]byte("My own Not Found handler."))
    w.Write([]byte(" The page you requested could not be found."))
}

var router *httprouter.Router = ... // Your router value
router.NotFound = http.HandlerFunc(MyNotFound)</code>
Copier après la connexion

Ce gestionnaire personnalisé sera automatiquement invoqué par httprouter lorsqu'une réponse 404 NotFound est rencontrée.

Invocation manuelle du gestionnaire NotFound

Dans certains cas, vous souhaiterez peut-être appeler manuellement le gestionnaire NotFound depuis un autre gestionnaire. Vous pouvez y parvenir en passant un ResponseWriter et un *Request à la fonction MyNotFound ou directement à la méthode NotFound du routeur :

<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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!