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,sliceorazio.Reader- Automatyczne wykrywanie
Content-Type - Użycie niebuforowanego przetwarzania dla
io.Reader - Dostęp do oryginalnej instancji
*http.RequestpoprzezRequest.RawRequestw 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
JSONiXML- Domyślnie ustawione na
JSON, jeśli nagłówekContent-Typeoraz parametrystruct/mapnie 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
BasicAuthorazBearer - 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/2orazHTTP/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+