Go Resty
Go Resty é uma biblioteca da linguagem Go para construir clientes de API RESTful. Ele fornece uma API concisa e poderosa que permite aos desenvolvedores enviar facilmente solicitações HTTP e lidar com respostas.
Características
- Suporta os métodos de solicitação GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS e outros
- Configurações simples e encadeáveis e métodos de solicitação
- O corpo da solicitação pode ser do tipo
string
,[]byte
,struct
,map
,slice
eio.Reader
- Detecta automaticamente
Content-Type
- Usa processamento não bufferizado para
io.Reader
- Acessa a instância original
*http.Request
viaRequest.RawRequest
em middleware e execução de solicitação - Permite múltiplas leituras do corpo da solicitação através de
Request.RawRequest.GetBody()
- Detecta automaticamente
- Fornece mais possibilidades com o objeto Response
- Acessa a resposta como um array
[]byte
-response.Body()
, ou como umstring
-response.String()
- Recupera o tempo de resposta
response.Time()
e o tempo recebidoresponse.ReceivedAt()
- Acessa a resposta como um array
- Codifica e decodifica automaticamente tipos de conteúdo como
JSON
eXML
- Padrões para
JSON
se o cabeçalhoContent-Type
e os parâmetrosstruct/map
não forem fornecidos - Fornece opções para substituir a codificação/decodificação JSON e a codificação/decodificação XML
- Padrões para
- Upload simples de um ou mais arquivos via
multipart/form-data
- Detecta automaticamente o tipo de conteúdo dos arquivos
- Suporta mecanismo de tentativa de repetição e referências de funções de condição de repetição
- Suporte a middleware para solicitações HTTP e REST no cliente Resty, incluindo Request e Response
- Suporta
Request.SetContext
- Opções de autorização para tokens
BasicAuth
eBearer
- Define o valor
ContentLength
da solicitação para todas as solicitações ou solicitações específicas - Certificados raiz personalizados e certificados de cliente
- Baixa/salva diretamente respostas HTTP em um arquivo, semelhante ao comando
curl -o
- Suporte a cookies para solicitações e CookieJar
- Solicitações baseadas em registros SRV em vez do URL do host
- Configurações de cliente como
Timeout
,RedirectPolicy
,Proxy
,TLSClientConfig
,Transport
, etc. - Design Resty
- Definir e selecionar no nível do cliente, com opção para substituir no nível da solicitação
- Middleware para solicitações e respostas
- Permite a criação de vários clientes usando
resty.New()
se necessário
- Seguro para goroutines de concorrência
- Modo de depuração - exibição de log clara e rica
- Gzip - Go lida automaticamente com isso, com tratamento de fallback no Resty
- Compatível com
HTTP/2
eHTTP/1.1
- Suporte a Bazel
- Fornece fácil simulação para teste do Resty
Versões do Go Suportadas
É recomendado usar go1.16
ou superior.
A partir da versão v1.10.0
, o Resty suporta go modules
.
A partir da versão v2
do Resty e acima, ele oferece suporte total à publicação de pacotes de módulos Go. Isso requer o uso de uma versão do Go que compreenda os imports com sufixo /vN
:
- 1.9.7+
- 1.10.3+
- 1.11+