Nutzung des Go-HTTP-Clients zur Deaktivierung automatischer Weiterleitungen
Bei der Go-Programmierung ist die Handhabung von HTTP-Weiterleitungen beim Erstellen von RESTful-API-Clients von entscheidender Bedeutung. Es gibt jedoch Szenarien, in denen eine automatische Umleitungsbehandlung unerwünscht ist. In dieser Frage wird ein alternativer Ansatz untersucht, um zu verhindern, dass der Go-HTTP-Client Weiterleitungen automatisch folgt.
Die erste in der Frage bereitgestellte Lösung hebt eine benutzerdefinierte Implementierung der CheckRedirect-Funktion hervor, die die Behandlung von HTTP-Weiterleitungen als Fehler erzwingt. Obwohl es technisch effektiv ist, fühlt es sich unnatürlich an, Weiterleitungen als Fehler zu klassifizieren.
Um dieses Problem zu beheben, bietet die Antwort eine elegantere Lösung: Ändern der CheckRedirect-Funktion, um http.ErrUseLastResponse zurückzugeben. Dies signalisiert dem HTTP-Paket, dass Weiterleitungen nicht befolgt werden sollten, ohne eine Fehlerbehandlung auszulösen.
Hier ist der aktualisierte Code:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
Mit dieser Änderung ignoriert der HTTP-Client Weiterleitungen und Geben Sie die neueste Antwort zurück, wobei der Textkörper noch zugänglich ist. Der Kommentar im Quellcode verdeutlicht Folgendes:
Wenn CheckRedirect als Sonderfall ErrUseLastResponse zurückgibt, wird die neueste Antwort mit nicht geschlossenem Text und einem Nullfehler zurückgegeben.
Als a Dadurch können Sie Weiterleitungen innerhalb Ihres Skripts manuell verwalten, was für mehr Flexibilität und Kontrolle über den HTTP-Workflow sorgt. Durch die Nutzung dieser Technik können Sie mit REST-APIs interagieren, die Weiterleitungen zurückgeben und gleichzeitig den gewünschten Grad an Anpassung beibehalten.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass der HTTP-Client von Go Weiterleitungen automatisch folgt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!