Heim >Backend-Entwicklung >Golang >Die POST-Anfrage kann mit Gin/GoLang nicht in eine GET-Anfrage geändert werden

Die POST-Anfrage kann mit Gin/GoLang nicht in eine GET-Anfrage geändert werden

PHPz
PHPznach vorne
2024-02-10 19:45:08569Durchsuche

无法使用 Gin/GoLang 将 POST 请求更改为 GET 请求

php-Editor Baicao stellt Ihnen heute ein häufiges Problem vor, nämlich wie man die POST-Anfrage in eine GET-Anfrage ändert, wenn man das Gin/GoLang-Framework verwendet. Manchmal müssen wir möglicherweise eine POST-Anfrage in eine GET-Anfrage umwandeln, beispielsweise in bestimmten Situationen oder aus Gründen der Testfreundlichkeit. Allerdings ist die Implementierung dieser Funktion nicht so einfach und erfordert einige Tricks und Code-Anpassungen. Als nächstes beantworten wir Ihnen diese Frage Schritt für Schritt und helfen Ihnen, diese Umstellung erfolgreich abzuschließen.

Frageninhalt

Ich kann die Post-Methode anscheinend nicht mit der Get-Methode im Gin-Framework ändern. Wenn ich eine Anfrage erhalte, möchte ich deren Anmeldeinformationen überprüfen und, falls gültig, auf eine andere Seite mit einem Get-Endpunkt umleiten. Wann immer ich c.request.method="get" verwende, scheint sich nur die Anfrage für den aktuellen Endpunkt zu ändern, aber der umgeleitete Endpunkt hat immer noch die ursprüngliche Methode, nämlich die Post-Methode.

Code:

auth.GET("/sign-in", func(c *gin.Context) {
    c.File("../../html/index.html")
})

auth.POST("/sign-in", func(c *gin.Context) {
    c.Request.Method = "GET"
    c.Redirect(http.StatusTemporaryRedirect, "/profile/:pid")
})

code 307请求原本是post请求,由端点本身更改为get.

Ausführen c.request.method="get" hilft nicht. Kann die Antwort auch nicht finden. Irgendeine Idee, wie man dieses Verhalten ändern kann? Ist das Erstellen einer neuen Anfrage die einzige Lösung?

Workaround

Statuscode 307 Dokumentation sagt:

Die Methode und der Text der ursprünglichen Anfrage werden wiederverwendet, um die umgeleitete Anfrage auszuführen. Wenn Sie die für GET verwendete Methode ändern möchten, verwenden Sie stattdessen 303 See Other.

Wenn Sie also http.StatusTemporaryRedirect 更改为 http.StatusSeeOther ändern, funktioniert es, ohne die ursprüngliche Anforderungsmethode zu ändern.

Das obige ist der detaillierte Inhalt vonDie POST-Anfrage kann mit Gin/GoLang nicht in eine GET-Anfrage geändert werden. 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