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+