Heim > Backend-Entwicklung > Golang > Wie kann verhindert werden, dass Fiber automatisch HEAD-Routen registriert?

Wie kann verhindert werden, dass Fiber automatisch HEAD-Routen registriert?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2024-02-06 09:33:03
nach vorne
571 Leute haben es durchsucht

Wie kann verhindert werden, dass Fiber automatisch HEAD-Routen registriert?

Frageninhalt

Fiber v2 (https://go Fiber.io/) fügt automatisch eine HEAD-Route für jede GET-Route hinzu. Kann man das verhindern?

Ich möchte mich nur für GET registrieren. Eigentlich möchte ich nur die Routen registrieren, die ich explizit hinzugefügt habe.

Ist das möglich?


Richtige Antwort


Anzeigen (*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...)
}
Nach dem Login kopieren

und (*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...)
}
Nach dem Login kopieren

Es gibt keine Möglichkeit, dieses Verhalten zu stoppen. Alles, was Sie tun können, ist, sie zu vermeiden und direkt die add 方法。例如,注册一个 get-Route zu verwenden, etwa so:

app.add(fiber.methodget, "/", func(c *fiber.ctx) error {
    return c.sendstring("hello, world!")
})
Nach dem Login kopieren

Bitte beachten Sie, dass (*app).use und (*group).use mit allen http-Verben übereinstimmen. Sie können head so löschen:

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,
})
Nach dem Login kopieren

HINWEIS: Immer wenn eine head 路由,它就会出现恐慌,因为它不包含在 requestmethods Route registriert wird, kommt es zu einer Panik, da sie nicht in requestmethods enthalten ist.

Ich weiß nicht, warum du das tust. Vielleicht wäre es eine bessere Option, eine Middleware zu verwenden, um alle head Anfragen wie diese abzulehnen:

app.Use(func(c *fiber.Ctx) error {
    if c.Method() == fiber.MethodHead {
        c.Status(fiber.StatusMethodNotAllowed)
        return nil
    }
    return c.Next()
})
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Fiber automatisch HEAD-Routen registriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage