Heim > Backend-Entwicklung > Golang > Wie kann ich Anforderungskörper in Go-chi-HTTP-Middleware-Handlern wiederverwenden?

Wie kann ich Anforderungskörper in Go-chi-HTTP-Middleware-Handlern wiederverwenden?

Barbara Streisand
Freigeben: 2024-12-20 13:32:09
Original
929 Leute haben es durchsucht

How Can I Reuse Request Bodies in Go-chi HTTP Middleware Handlers?

Bestimmen der Wiederverwendbarkeit von Anforderungstexten in HTTP-Middleware-Handlern

In diesem Szenario tritt das Problem auf, wenn versucht wird, eine Methode innerhalb einer anderen in einem Go wiederzuverwenden -chi HTTP-Router. Der äußere Handler, Registration(), liest den Anforderungstext mit ioutil.ReadAll(r.Body), sodass dem inneren Handler, Create(), keine Daten zum Parsen von JSON zur Verfügung stehen.

Lösung : Wiederherstellen des Anforderungstexts

Um dieses Problem zu beheben, führen Sie Folgendes aus Fix:

func Registration(w http.ResponseWriter, r *http.Request) {
    b, err := io.ReadAll(r.Body) 
    // ...other code
    r.Body = io.NopCloser(bytes.NewReader(b))
    user.Create(w, r)
}
Nach dem Login kopieren

So behebt dieser Code das Problem:

  • io.ReadAll(r.Body): Liest den gesamten Anfragetext.
  • io.NopCloser(bytes.NewReader(b)): Stellt wieder her den Anforderungstext durch Erstellen eines io.Reader aus den zuvor gelesenen Daten.
  • r.Body = io.NopCloser(...): Ersetzt den ursprünglichen r.Body durch den wiederhergestellten Text .

Auf diese Weise kann der innere Handler auf die JSON-Daten aus dem Anforderungshauptteil zugreifen, ohne auf das „unerwartete Ende der JSON-Eingabe“ zu stoßen. Fehler.

Das obige ist der detaillierte Inhalt vonWie kann ich Anforderungskörper in Go-chi-HTTP-Middleware-Handlern wiederverwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage