Maison >développement back-end >Golang >Simplifiez vos réponses API REST avec Milogo pour 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.
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.
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": { ... } }
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é.
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!