Go Resty
Go Resty to biblioteka języka Go do budowania klientów interfejsu API REST. Zapewnia zwięzłe i potężne API, które umożliwia programistom łatwe wysyłanie żądań HTTP i obsługę odpowiedzi.
Funkcje
- Obsługa metod żądania GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS oraz innych
- Proste i łańcuchowe ustawienia oraz metody żądania
- Ciało żądania może być typu
string
,[]byte
,struct
,map
,slice
orazio.Reader
- Automatyczne wykrywanie
Content-Type
- Użycie niebuforowanego przetwarzania dla
io.Reader
- Dostęp do oryginalnej instancji
*http.Request
poprzezRequest.RawRequest
w middleware oraz wykonaniu żądania - Możliwość wielokrotnego odczytu ciała żądania za pomocą
Request.RawRequest.GetBody()
- Automatyczne wykrywanie
- Zapewnia większe możliwości z obiektem Response
- Dostęp do odpowiedzi jako tablicy
[]byte
-response.Body()
, lub jakostring
-response.String()
- Pobiera czas odpowiedzi
response.Time()
oraz czas otrzymaniaresponse.ReceivedAt()
- Dostęp do odpowiedzi jako tablicy
- Automatyczne kodowanie i dekodowanie typów zawartości takich jak
JSON
iXML
- Domyślnie ustawione na
JSON
, jeśli nagłówekContent-Type
oraz parametrystruct/map
nie są podane - Udostępnia opcje zastępowania kodowania/dekodowania JSON oraz kodowania/dekodowania XML
- Domyślnie ustawione na
- Proste przesyłanie jednego lub większej liczby plików za pomocą
multipart/form-data
- Automatyczne wykrywanie typu zawartości plików
- Obsługa mechanizmu ponawiania prób i odwołań do funkcji warunku ponownego próbowania
- Wsparcie dla middleware dla żądań HTTP i REST w kliencie Resty, w tym Request oraz Response
- Obsługa
Request.SetContext
- Opcje autoryzacji dla tokenów
BasicAuth
orazBearer
- Ustawianie wartości
ContentLength
żądania dla wszystkich żądań lub określonych żądań - Niestandardowe certyfikaty główne oraz certyfikaty klienta
- Bezpośrednie pobieranie/zapisywanie odpowiedzi HTTP do pliku, podobnie do polecenia
curl -o
- Wsparcie dla żądań oraz CookieJar dla ciasteczek
- Żądania oparte na rekordach SRV zamiast adresu URL hosta
- Ustawienia klienta takie jak
Timeout
,RedirectPolicy
,Proxy
,TLSClientConfig
,Transport
, itp. - Projektowanie Resty
- Ustawianie i wybór na poziomie klienta, z możliwością zastępowania na poziomie żądania
- Middleware dla żądań i odpowiedzi
- Umożliwia tworzenie wielu klientów za pomocą
resty.New()
w razie potrzeby
- Bezpieczne dla wielowątkowości goroutine
- Tryb debugowania - czytelne i bogate wyświetlanie logów
- Gzip - Go automatycznie się tym zajmuje, z obsługą awaryjną w Resty
- Kompatybilne z
HTTP/2
orazHTTP/1.1
- Wsparcie dla Bazel
- Umożliwia łatwe imitowanie do testowania Resty
Obsługiwane wersje Go
Zaleca się korzystanie z go1.16
i nowszych.
Począwszy od wersji v1.10.0
, Resty obsługuje moduły go
.
Od wersji Resty v2
i wyższej, w pełni obsługuje publikowanie pakietów modułów go. Wymaga użycia wersji Go, która rozumie importy z sufiksem /vN
:
- 1.9.7+
- 1.10.3+
- 1.11+