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

Comment empêcher Fiber d'enregistrer automatiquement les routes HEAD ?

WBOY
Libérer: 2024-02-06 09:33:03
avant
450 Les gens l'ont consulté

Comment empêcher Fiber denregistrer automatiquement les routes HEAD ?

Contenu de la question

Fiber v2 (https://go Fiber.io/) ajoutera automatiquement une route HEAD pour chaque route GET. Est-il possible d'empêcher cela ?

Je veux juste m'inscrire au GET. En fait, je souhaite uniquement enregistrer les itinéraires que j'ai ajoutés explicitement.

Est-il possible de faire cela ?


Bonne réponse


Voir (*app).get:

// get registers a route for get methods that requests a representation
// of the specified resource. requests using get should only retrieve data.
func (app *app) get(path string, handlers ...handler) router {
    return app.head(path, handlers...).add(methodget, path, handlers...)
}
Copier après la connexion

et (*group).get : 

// get registers a route for get methods that requests a representation
// of the specified resource. requests using get should only retrieve data.
func (grp *group) get(path string, handlers ...handler) router {
    grp.add(methodhead, path, handlers...)
    return grp.add(methodget, path, handlers...)
}
Copier après la connexion

Il n'y a aucun moyen d'arrêter ce comportement. Tout ce que vous pouvez faire, c'est éviter de les utiliser et emprunter directement l'itinéraire add 方法。例如,注册一个 get, comme ceci :

app.add(fiber.methodget, "/", func(c *fiber.ctx) error {
    return c.sendstring("hello, world!")
})
Copier après la connexion

Veuillez noter que (*app).use et (*group).use correspondent à tous les verbes http. Vous pouvez supprimer head comme ceci :

methods := make([]string, 0, len(fiber.defaultmethods)-1)
for _, m := range fiber.defaultmethods {
    if m != fiber.methodhead {
        methods = append(methods, m)
    }
}
app := fiber.new(fiber.config{
    requestmethods: methods,
})
Copier après la connexion

REMARQUE : Chaque fois qu'un head 路由,它就会出现恐慌,因为它不包含在 requestmethods itinéraire est enregistré, il panique car il n'est pas inclus dans les requestmethods.

Je ne sais pas pourquoi tu fais ça. Peut-être qu'une meilleure option serait d'utiliser un middleware pour refuser toutes les head requêtes comme celle-ci :

app.Use(func(c *fiber.Ctx) error {
    if c.Method() == fiber.MethodHead {
        c.Status(fiber.StatusMethodNotAllowed)
        return nil
    }
    return c.Next()
})
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:stackoverflow.com
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
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!