Maison > développement back-end > Golang > Comment empêcher Fiber d'enregistrer automatiquement les routes HEAD ?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-06 09:33:03
avant
571 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!

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