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+