Go Resty

Go Resty è una libreria del linguaggio Go per la creazione di client API RESTful. Fornisce un'API concisa e potente che consente ai programmatori di inviare facilmente richieste HTTP e gestire le risposte.

Caratteristiche

  • Supporta i metodi di richiesta GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS e altri
  • Impostazioni semplici e concatenabili e metodi di richiesta
  • Il corpo della richiesta può essere di tipo string, []byte, struct, map, slice e io.Reader
    • Rileva automaticamente il Content-Type
    • Utilizza l'elaborazione non bufferizzata per io.Reader
    • Accede all'istanza originale di *http.Request tramite Request.RawRequest nei middleware ed esecuzione della richiesta
    • Consente letture multiple del corpo della richiesta tramite Request.RawRequest.GetBody()
  • Offre più possibilità con l'oggetto di risposta
    • Accede alla risposta come un array di []byte - response.Body(), o come una string - response.String()
    • Recupera il tempo di risposta response.Time() e il tempo ricevuto response.ReceivedAt()
  • Codifica e decodifica automaticamente tipi di contenuti come JSON e XML
    • Predefinito a JSON se l'intestazione Content-Type e i parametri struct/map non vengono forniti
    • Fornisce opzioni per sovrascrivere la codifica/decodifica JSON e la codifica/decodifica XML
  • Caricamento semplice di uno o più file tramite multipart/form-data
    • Rileva automaticamente il tipo di contenuto dei file
  • Supporta meccanismi di retry di backoff e riferimenti di funzione di condizione di retry
  • Supporto middleware per le richieste HTTP e REST nel client Resty, inclusa la richiesta e la risposta
  • Supporta Request.SetContext
  • Opzioni di autorizzazione per i token BasicAuth e Bearer
  • Imposta il valore ContentLength della richiesta per tutte le richieste o richieste specifiche
  • Certificati radice personalizzati e certificati client
  • Scarica/salva direttamente le risposte HTTP su un file, simile al comando curl -o
  • Supporto richieste e CookieJar per i cookie
  • Richieste basate su record SRV invece dell'URL dell'host
  • Impostazioni del client come Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, ecc.
  • Design Resty
    • Impostazione e selezione a livello di client, con opzione di sovrascrittura a livello di richiesta
    • Middleware per richieste e risposte
    • Consente la creazione di più client utilizzando resty.New() se necessario
  • Sicuro per la concorrenza delle Goroutine
  • Modalità di debug - visualizzazione log chiara e ricca
  • Gzip - Go lo gestisce automaticamente, con gestione di fallback in Resty
  • Compatibile con HTTP/2 e HTTP/1.1
  • Supporto Bazel
  • Fornisce un facile mocking per testare Resty

Versioni di Go supportate

Si consiglia di utilizzare go1.16 e versioni successive.

A partire dalla versione v1.10.0, Resty supporta i go modules.

Dalla versione di Resty v2 in su, supporta completamente la pubblicazione del pacchetto dei moduli go. Richiede l'uso di una versione di Go che comprenda gli import con suffisso /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+