Go Resty

Go Resty - это библиотека языка Go для создания клиентов RESTful API. Она предоставляет краткий и мощный API, который позволяет разработчикам легко отправлять HTTP-запросы и обрабатывать ответы.

Особенности

  • Поддерживает методы запросов GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS и другие
  • Простые и цепочные настройки и методы запросов
  • Тело запроса может быть типа string, []byte, struct, map, slice и io.Reader
    • Автоматически определяет Content-Type
    • Использует небуферизированную обработку для io.Reader
    • Получает доступ к исходному экземпляру *http.Request через Request.RawRequest в промежуточном ПО и выполнении запроса
    • Позволяет многократное чтение тела запроса через Request.RawRequest.GetBody()
  • Предоставляет больше возможностей с объектом Response
    • Получает доступ к ответу как к массиву []byte - response.Body(), или как string - response.String()
    • Извлекает время ответа response.Time() и время получения response.ReceivedAt()
  • Автоматически кодирует и декодирует типы контента, такие как JSON и XML
    • По умолчанию использует JSON, если заголовок Content-Type и параметры struct/map не указаны
    • Предоставляет опции для переопределения кодирования/декодирования JSON и кодирования/декодирования XML
  • Простая загрузка одного или нескольких файлов с помощью multipart/form-data
    • Автоматически определяет тип контента файлов
  • Поддержка механизма повтора попыток и ссылок на функции условий повтора
  • Поддержка промежуточного ПО для HTTP- и REST-запросов в клиенте Resty, включая запрос и ответ
  • Поддерживает Request.SetContext
  • Опции авторизации для BasicAuth и Bearer токенов
  • Устанавливает значение ContentLength для всех запросов или конкретных запросов
  • Пользовательские корневые сертификаты и клиентские сертификаты
  • Прямая загрузка/сохранение HTTP-ответов в файл, аналогично команде curl -o
  • Поддержка запросов и CookieJar для cookies
  • Запросы на основе записей SRV вместо URL-адреса хоста
  • Настройки клиента, такие как Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, и т. д.
  • Дизайн Resty
    • Устанавливается и выбирается на уровне клиента, с возможностью переопределения на уровне запроса
    • Промежуточное ПО для запросов и ответов
    • Позволяет создавать несколько клиентов с помощью resty.New(), если это необходимо
  • Безопасен для конкурентности goroutine
  • Режим отладки - четкое и информативное отображение журнала
  • Gzip - Go автоматически обрабатывает его, с обработкой отката в Resty
  • Совместим с HTTP/2 и HTTP/1.1
  • Поддержка Bazel
  • Обеспечивает простую подделку для тестирования Resty

Поддерживаемые версии Go

Рекомендуется использовать go1.16 и выше.

Начиная с версии v1.10.0, Resty поддерживает go модули.

Начиная с версии Resty v2 и выше, он полностью поддерживает публикацию пакетов go modules. Для этого требуется использование версии Go, которая понимает импорты с суффиксом /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+