Go Resty

Go Resty es una biblioteca de lenguaje Go para construir clientes de API RESTful. Proporciona una API concisa y potente que permite a los desarrolladores enviar fácilmente solicitudes HTTP y manejar respuestas.

Características

  • Admite los métodos de solicitud GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, y otros
  • Configuraciones simples y encadenables para los métodos de solicitud
  • El cuerpo de la solicitud puede ser del tipo string, []byte, struct, map, slice, e io.Reader
    • Detecta automáticamente el Content-Type
    • Utiliza un procesamiento sin búfer para io.Reader
    • Accede a la instancia original *http.Request a través de Request.RawRequest en middleware y ejecución de la solicitud
    • Permite múltiples lecturas del cuerpo de la solicitud a través de Request.RawRequest.GetBody()
  • Proporciona más posibilidades con el objeto de respuesta
    • Accede a la respuesta como una matriz []byte - response.Body(), o como una cadena string - response.String()
    • Obtiene el tiempo de respuesta response.Time() y el tiempo recibido response.ReceivedAt()
  • Codifica y decodifica automáticamente tipos de contenido como JSON y XML
    • Por defecto, utiliza JSON si no se proporcionan encabezados Content-Type y parámetros struct/map
    • Proporciona opciones para anular la codificación/decodificación JSON y la codificación/decodificación XML
  • Subida sencilla de uno o más archivos a través de multipart/form-data
    • Detecta automáticamente el tipo de contenido de los archivos
  • Admite mecanismo de reintento de respaldo y referencias de función de condición de reintento
  • Soporte de middleware para solicitudes HTTP y REST en el cliente Resty, incluyendo solicitud y respuesta
  • Admite Request.SetContext
  • Opciones de autorización para tokens BasicAuth y Bearer
  • Establece el valor ContentLength de la solicitud para todas las solicitudes o solicitudes específicas
  • Certificados raíz personalizados y certificados de cliente
  • Descarga/guarda directamente respuestas HTTP en un archivo, similar al comando curl -o
  • Soporte de solicitud y CookieJar para cookies
  • Solicitudes basadas en registros SRV en lugar de la URL del host
  • Configuraciones de cliente como Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, etc.
  • Diseño de Resty
    • Establece y selecciona a nivel de cliente, con opción de anulación a nivel de solicitud
    • Middleware para solicitudes y respuestas
    • Permite la creación de múltiples clientes usando resty.New() si es necesario
  • Seguro para concurrencia en Goroutines
  • Modo de depuración: visualización clara y completa de registros
  • Gzip: Go lo maneja automáticamente, con manejo de respaldo en Resty
  • Compatible con HTTP/2 y HTTP/1.1
  • Soporte de Bazel
  • Proporciona un fácil mock para probar Resty

Versiones de Go compatibles

Se recomienda utilizar go1.16 y versiones superiores.

A partir de la versión v1.10.0, Resty soporta go modules.

Desde la versión v2 y superiores de Resty, admite completamente la publicación de paquetes de módulos de Go. Requiere el uso de una versión de Go que entienda las importaciones con sufijo /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+