Personnalisation de "Not Found" (404) Gestion avec httprouter
Lors du développement d'une API à l'aide de la bibliothèque httprouter, gestion de 404 (Not Found) les réponses constituent une tâche cruciale. Bien que la documentation mentionne la possibilité de gérer les 404 manuellement, la mise en œuvre d'un gestionnaire personnalisé peut s'avérer difficile.
Comprendre le champ NotFound
La structure httprouter.Router comprend un champ nommé NotFound, qui est de type http.Handler. Cela signifie que la valeur de NotFound doit implémenter la méthode ServeHTTP présente dans l'interface http.Handler.
Création d'un gestionnaire "Not Found" personnalisé
Pour définir le vôtre gestionnaire personnalisé, vous pouvez créer une fonction avec une signature correspondant à la méthode ServeHTTP :
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { // ... Custom handling logic }</code>
Conversion de la fonction en gestionnaire
Pour convertir votre fonction en valeur qui implémente l'interface http.Handler, vous pouvez utiliser la fonction d'assistance http.HandlerFunc() :
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
Invocation manuelle du gestionnaire personnalisé
Si vous souhaitez appelez votre gestionnaire personnalisé manuellement à partir d'autres gestionnaires, fournissez au gestionnaire un ResponseWriter et une *Requête :
<code class="go">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 }</code>
Conclusion
En suivant ces étapes, vous pouvez personnalisez efficacement le processus de gestion des « Introuvable » dans votre API basée sur httprouter, en garantissant que les utilisateurs reçoivent des réponses appropriées lorsqu'ils tentent d'accéder à des ressources inexistantes.
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!