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 oraz io.Reader
    • Automatyczne wykrywanie Content-Type
    • Użycie niebuforowanego przetwarzania dla io.Reader
    • Dostęp do oryginalnej instancji *http.Request poprzez Request.RawRequest w middleware oraz wykonaniu żądania
    • Możliwość wielokrotnego odczytu ciała żądania za pomocą Request.RawRequest.GetBody()
  • Zapewnia większe możliwości z obiektem Response
    • Dostęp do odpowiedzi jako tablicy []byte - response.Body(), lub jako string - response.String()
    • Pobiera czas odpowiedzi response.Time() oraz czas otrzymania response.ReceivedAt()
  • Automatyczne kodowanie i dekodowanie typów zawartości takich jak JSON i XML
    • Domyślnie ustawione na JSON, jeśli nagłówek Content-Type oraz parametry struct/map nie są podane
    • Udostępnia opcje zastępowania kodowania/dekodowania JSON oraz kodowania/dekodowania XML
  • 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 oraz Bearer
  • 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 oraz HTTP/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+