Go Resty

Go Resty ist eine Go-Sprachbibliothek für den Aufbau von RESTful API-Clients. Es bietet eine prägnante und leistungsstarke API, die es Entwicklern ermöglicht, HTTP-Anforderungen einfach zu senden und Antworten zu verarbeiten.

Funktionen

  • Unterstützt GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS und andere Anfragemethoden
  • Einfache und verknüpfbare Einstellungen und Anfragemethoden
  • Der Anfragekörper kann vom Typ string, []byte, struct, map, slice und io.Reader sein
    • Erkennt automatisch Content-Type
    • Verwendet ungepufferte Verarbeitung für io.Reader
    • Greift über Request.RawRequest auf die ursprüngliche *http.Request-Instanz in Middleware und Anfrageausführung zu
    • Ermöglicht mehrfaches Lesen des Anfragekörpers über Request.RawRequest.GetBody()
  • Bietet mit dem Response-Objekt weitere Möglichkeiten
    • Greift auf die Antwort als []byte-Array zu - response.Body(), oder als string - response.String()
    • Ruft die Antwortzeit response.Time() und die Empfangszeit response.ReceivedAt() ab
  • Kodiert und decodiert automatisch Content-Types wie JSON und XML
    • Standardmäßig auf JSON, wenn Content-Type-Header und struct/map-Parameter nicht bereitgestellt werden
    • Bietet Optionen zum Überschreiben von JSON-Encoding/Decoding und XML-Encoding/Decoding
  • Einfaches Hochladen von einer oder mehreren Dateien über multipart/form-data
    • Erkennt automatisch den Content-Type der Dateien
  • Unterstützt Backoff-Retry-Mechanismus und Wiederholungsbedingungsfunktionsverweise
  • Middleware-Unterstützung für HTTP- und REST-Anfragen im Resty-Client, einschließlich Anfrage und Antwort
  • Unterstützt Request.SetContext
  • Autorisierungsoptionen für BasicAuth und Bearer-Token
  • Legt den Wert der Anforderung ContentLength für alle oder bestimmte Anfragen fest
  • Benutzerdefinierte Stammzertifikate und Clientzertifikate
  • Lädt HTTP-Antworten direkt herunter/speichert sie in einer Datei, ähnlich dem curl -o-Befehl
  • Unterstützung von Anfragen und CookieJar für Cookies
  • Anfragen basierend auf SRV-Einträgen anstelle der Host-URL
  • Clienteinstellungen wie Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, etc.
  • Resty-Design
    • Einstellung und Auswahl auf Client-Ebene, mit der Möglichkeit zur Überschreibung auf Anfrage-Ebene
    • Middleware für Anfragen und Antworten
    • Ermöglicht die Erstellung mehrerer Clients über resty.New(), wenn nötig
  • Goroutine-sicher für Nebenläufigkeit
  • Debug-Modus - klare und umfangreiche Protokollanzeige
  • Gzip - Go handhabt es automatisch, mit Fallback-Behandlung in Resty
  • Kompatibel mit HTTP/2 und HTTP/1.1
  • Bazel-Unterstützung
  • Ermöglicht einfaches Mocking für das Testen von Resty

Unterstützte Go-Versionen

Es wird empfohlen, go1.16 und höher zu verwenden.

Ab Version v1.10.0 unterstützt Resty go modules.

Ab Resty-Version v2 und höher unterstützt es vollständig das Veröffentlichen von go modules-Paketen. Es erfordert die Verwendung einer Go-Version, die Importe mit dem /vN-Suffix versteht:

  • 1.9.7+
  • 1.10.3+
  • 1.11+