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

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

Barbara Streisand
Freigeben: 2024-12-04 16:54:15
Original
466 Leute haben es durchsucht

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

Wiederverwendbarkeit des HTTP-Anforderungstexts in der Go-chi-Middleware

Bei der Arbeit mit Go-chi für HTTP-Routing ist es häufig erforderlich, Anforderungstexte über mehrere Handler hinweg wiederzuverwenden. Eine häufige Herausforderung entsteht jedoch, wenn der Anfragetext nur einmal gelesen werden kann.

Betrachten Sie beispielsweise den folgenden Code:

func Registration(w http.ResponseWriter, r *http.Request) {
    b, err := ioutil.ReadAll(r.Body) // read request body
    // ...other code
    user.Create(w, r)
}

...

func Create(w http.ResponseWriter, r *http.Request) {
  b, err := ioutil.ReadAll(r.Body)  
  // ...other code
}
Nach dem Login kopieren

In diesem Beispiel liest der Registrierungshandler den Anfragetext mit ioutil.ReadAll. Wenn der Create-Handler aufgerufen wird, versucht er, den Textkörper erneut zu lesen, was zu einem unerwarteten Ende der JSON-Eingabefehler führt.

Das grundlegende Problem besteht darin, dass der erste Aufruf von ReadAll den Anforderungstext erschöpft. Um dieses Problem zu beheben, muss der Anforderungstext mit den zuvor gelesenen Daten wiederhergestellt werden. Der folgende Code zeigt, wie:

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

In diesem überarbeiteten Code wird io.ReadAll verwendet, um den Anforderungstext zu lesen, und dann wird der Anforderungstext vor dem Aufruf mit den Funktionen bytes.NewReader und io.NopCloser wiederhergestellt user.Create. Dadurch wird der Anforderungstext effektiv für nachfolgende Handler verfügbar gemacht.

Das obige ist der detaillierte Inhalt vonWie kann ich HTTP-Anforderungskörper in der Go-chi-Middleware 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