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 e io.Reader
    • Detecta automaticamente Content-Type
    • Usa processamento não bufferizado para io.Reader
    • Acessa a instância original *http.Request via Request.RawRequest em middleware e execução de solicitação
    • Permite múltiplas leituras do corpo da solicitação através de Request.RawRequest.GetBody()
  • Fornece mais possibilidades com o objeto Response
    • Acessa a resposta como um array []byte - response.Body(), ou como um string - response.String()
    • Recupera o tempo de resposta response.Time() e o tempo recebido response.ReceivedAt()
  • Codifica e decodifica automaticamente tipos de conteúdo como JSON e XML
    • Padrões para JSON se o cabeçalho Content-Type e os parâmetros struct/map não forem fornecidos
    • Fornece opções para substituir a codificação/decodificação JSON e a codificação/decodificação XML
  • 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 e Bearer
  • 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 e HTTP/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+