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

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

WBOY
WBOYnach vorne
2024-02-06 09:33:03450Durchsuche

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...)
}

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...)
}

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!")
})

Bitte beachten Sie, dass (*app).use a> 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,
})

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()
})

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen