Go Resty

Go Resty est une bibliothèque de langage Go pour la construction de clients d'API RESTful. Il fournit une API concise et puissante qui permet aux développeurs d'envoyer facilement des requêtes HTTP et de gérer les réponses.

Caractéristiques

  • Prise en charge des méthodes de requête GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, et autres
  • Paramètres et méthodes de requête simples et chaînables
  • Le corps de la requête peut être de type string, []byte, struct, map, slice, et io.Reader
    • Détecte automatiquement le Content-Type
    • Utilise un traitement non mis en mémoire tampon pour io.Reader
    • Accède à l'instance originale de *http.Request via Request.RawRequest dans les middlewares et l'exécution de la requête
    • Permet de lire plusieurs fois le corps de la requête à travers Request.RawRequest.GetBody()
  • Offre plus de possibilités avec l'objet Response
    • Accède à la réponse en tant que tableau de []byte - response.Body(), ou en tant que string - response.String()
    • Récupère le temps de réponse response.Time() et le temps de réception response.ReceivedAt()
  • Encode et décode automatiquement les types de contenu tels que JSON et XML
    • Par défaut à JSON si l'en-tête Content-Type et les paramètres struct/map ne sont pas fournis
    • Offre des options pour remplacer l'encodage/décodage JSON et l'encodage/décodage XML
  • Chargement simple d'un ou de plusieurs fichiers via multipart/form-data
    • Détecte automatiquement le type de contenu des fichiers
  • Prise en charge du mécanisme de réessai et des références de fonction de condition de réessai
  • Prise en charge des middlewares pour les requêtes HTTP et REST dans le client Resty, y compris la requête et la réponse
  • Prend en charge Request.SetContext
  • Options d'autorisation pour les jetons BasicAuth et Bearer
  • Définit la valeur ContentLength de la requête pour toutes les requêtes ou des requêtes spécifiques
  • Certificats racine personnalisés et certificats client
  • Télécharge/enregistre directement les réponses HTTP dans un fichier, similaire à la commande curl -o
  • Support de requête et de CookieJar pour les cookies
  • Requêtes basées sur les enregistrements SRV au lieu de l'URL de l'hôte
  • Paramètres du client tels que Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, etc.
  • Conception de Resty
    • Définir et sélectionner au niveau du client, avec la possibilité de remplacer au niveau de la requête
    • Middlewares pour les requêtes et les réponses
    • Permet la création de plusieurs clients en utilisant resty.New() si nécessaire
  • Sûr pour les goroutines en cas de concurrence
  • Mode de débogage - affichage de journal clair et riche
  • Gzip - Go le gère automatiquement, avec une prise en charge de secours dans Resty
  • Compatible avec HTTP/2 et HTTP/1.1
  • Prise en charge de Bazel
  • Fournit un mock facile pour tester Resty

Versions de Go prises en charge

Il est recommandé d'utiliser go1.16 et supérieur.

À partir de la version v1.10.0, Resty prend en charge les go modules.

À partir de la version Resty v2 et supérieure, il prend en charge pleinement la publication de packages de go modules. Il nécessite l'utilisation d'une version de Go qui comprend les importations avec suffixe /vN :

  • 1.9.7+
  • 1.10.3+
  • 1.11+