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.
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.
Pour créer un gestionnaire NotFound personnalisé, vous devez définir une fonction avec la signature :
func(http.ResponseWriter, *http.Request)
Vous pouvez ensuite convertir cette fonction en http.Handler à l'aide de la fonction d'assistance http.HandlerFunc.
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>
Ce gestionnaire personnalisé sera automatiquement invoqué par httprouter lorsqu'une réponse 404 NotFound est rencontrée.
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>
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!