Maison >développement back-end >Golang >Simplifiez vos réponses API REST avec Milogo pour Gin-Gonic

Simplifiez vos réponses API REST avec Milogo pour Gin-Gonic

DDD
DDDoriginal
2024-11-27 10:27:09401parcourir

Simplify Your REST API Responses with Milogo for Gin-Gonic

Middleware Gin-Gonic qui implémente le modèle de sélection de champs

Dans mon entreprise, nous utilisons Go pour créer des outils internes. Récemment, j'ai travaillé sur une API REST utilisant gin-gonic, ce qui nécessitait d'afficher beaucoup de données sur de nombreux points de terminaison.

Une fonctionnalité indispensable dans ce type de scénario est la pagination, mais un modèle souvent négligé est la réponse partielle (alias sélection de champ). Ce qui est également un très bon ajout pour filtrer la quantité de données dans les réponses de votre serveur web.

Qu’est-ce que la sélection de champs ?

Explicitons d'abord ce que je veux dire par sélection de champs. Imaginez que vous ayez le point de terminaison suivant :

// > GET /api/products
[
  {
    "id": 1,
    "createdAt": "2024-18-11",
    "updatedAt": "2024-18-11",
    "code": "1",
    "price": {
      "amount": 100,
      "currency": "EUR"
    },
    "manufacturedBy": "myshop",
    "stock": 552,
    ...
  },
  ...
]

À l'aide de réponses partielles, les clients peuvent filtrer la sortie avec un paramètre de requête de champs, par exemple

// > GET /api/products?fields=code,price
[
  {
    "code": "1",
    "price": {
      "amount": 100,
      "currency": "EUR"
    }
  },
  ...
]

Seuls les champs déclarés dans le paramètre de requête sont renvoyés. Réduire la taille de la charge utile et économiser la bande passante.

Présentation de Milogo

Je n'ai trouvé aucune implémentation disponible pour ce modèle, j'ai donc décidé de le créer moi-même, et c'est ainsi qu'est né Milogo.
Milogo est un middleware Gin qui traite les réponses de l'API, filtre les champs spécifiés dans le paramètre de requête des champs et renvoie uniquement les données demandées.

Quelques-unes des principales fonctionnalités disponibles :

  • Prise en charge des objets json et des tableaux json.
    Milogo peut donc filtrer les champs pour les réponses JSON commençant par un tableau d'éléments ou simplement par un seul élément.

  • Prise en charge du filtrage des champs dans les objets JSON imbriqués.
    Milogo prend également en charge le filtrage des objets JSON imbriqués au format suivant, par ex. code,prix(montant)

  • Prise en charge de json enveloppé dans un autre json.
    Parfois, les réponses JSON sont encapsulées dans un autre objet JSON, Milogo prend en charge le filtrage de la charge utile réelle (voir exemple encapsulé) :

// GET /products?fields=code,price(amount)
{
  "data": [
    {
      "code": 1,
      "price": {
        "amount": 100
      }
    },
    ...
  ],
  "_metadata": {
    ...
  }
}

Commencer

Comme tout middleware gin, Milogo est vraiment facile à utiliser et à configurer, vous pouvez suivre le README dans le dépôt github, mais en gros :

r := gin.Default()
r.Use(Milogo())

il suffit d'ajouter le middleware Milogo à votre API.

Dans l'exemple précédent, Milogo est appliqué à chaque point de terminaison, mais il est également possible de l'appliquer uniquement à un groupe de points de terminaison, ou simplement à un point de terminaison spécifique, par exemple

group := r.Group("/products", milogo.Milogo())
group.GET("", productsHandler)

Dans l'exemple précédent, seul le groupe /products aurait le middleware de Milogo appliqué.

Conclusion

Milogo est conçu pour simplifier le développement d'API REST et améliorer les interactions client-serveur. Consultez le référentiel GitHub pour des exemples et de la documentation.

N'hésitez pas à nous contacter ou à contribuer : rendons les API REST efficaces ensemble !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn