À propos d'API Gateway
Les services Web offrent aujourd'hui une grande variété de fonctionnalités, allant des services de cartes, de météo et d'images aux jeux, aux enchères et à de nombreux autres types de services. Les fournisseurs de services disposent de nombreuses options pour implémenter, déployer et gérer leurs services. Par exemple, un service peut être développé en Java ou en .NET, tandis qu'un autre utilise Node.js.
Les implémentations de backend peuvent également varier pour un même fournisseur de services. Un fournisseur de services peut avoir des services anciens implémentés à l'aide d'une architecture et de nouveaux services implémentés à l'aide d'une architecture complètement différente.
Quelle que soit l'implémentation, les services Web nécessitent tous un moyen de les rendre disponibles pour les développeurs d'applications. Ces services sont souvent exposés sous la forme d'un ensemble de points de terminaison HTTP. Selon le service, le point de terminaison peut également renvoyer des données, au format XML ou JSON, vers l'application cliente.
À propos des services Google Cloud Platform
Lorsque vous développez vos services sur Google Cloud Platform (GCP), vous avez de nombreuses options pour les implémenter, comme les fonctions Cloud Run, Cloud Run et l'environnement standard App Engine. La flexibilité de GCP vous permet de choisir l'architecture de backend adaptée à vos exigences de service.
Les développeurs d'applications sont les clients des services de backend. Les développeurs d'applications utilisent vos services pour implémenter des applications pour appareils mobiles ou tablettes, via des applications exécutées dans un navigateur ou via tout autre type d'application pouvant envoyer une requête de service.
Exposer des services publiquement sur le Web peut s'avérer difficile. Pour réussir, un fournisseur de services doit:
- Authentifier l'accès au service
- Sécuriser le transport des données entre les clients et le service
- Protéger le service contre les attaques malveillantes
- Évoluer le service à mesure que l'utilisation augmente ou diminue
- Fournir à l'équipe d'exploitation du backend un moyen de surveiller et de suivre l'utilisation du service
- Suivre l'utilisation pour fournir des informations de facturation précises
De plus, si vos services utilisent des interfaces et des protocoles différents, l'accès à ces services peut représenter un défi pour les développeurs d'applications. Les développeurs doivent non seulement apprendre et comprendre chaque interface de service, mais aussi surveiller les différents services pour détecter les modifications, puis mettre à jour et redéployer les applications si nécessaire.
API Gateway
API Gateway vous permet de fournir un accès sécurisé à vos services via une API REST bien définie et cohérente entre tous vos services, quelle que soit leur implémentation. Une API cohérente :
- permet aux développeurs d'applications de consommer facilement vos services ;
- permet de modifier la mise en œuvre du service de backend sans affecter l'API publique ;
- vous permet de tirer parti des fonctionnalités de scaling, de surveillance et de sécurité intégrées à Google Cloud Platform (GCP).
L'image suivante montre les développeurs d'applications qui envoient des requêtes à vos services de backend via API Gateway :
Avec API Gateway, les développeurs d'applications utilisent vos API REST pour implémenter des applications. Étant donné que toutes les API sont hébergées sur API Gateway, les développeurs d'applications voient une interface cohérente entre tous les services de backend.
En déployant vos API sur API Gateway, vous pouvez mettre à jour le service de backend, voire le déplacer d'une architecture à une autre, sans avoir à modifier l'API. Tant que l'API de votre service reste cohérente, les développeurs d'applications n'auront pas à modifier les applications déployées en raison de modifications sous-jacentes apportées à votre backend.
API Gateway est un système de gestion d'API distribué qui fournit également des fonctionnalités d'hébergement, de journalisation, de surveillance et d'autres pour vous aider à créer, partager, gérer et sécuriser vos API. API Gateway est intégré de manière native à GCP et gère toutes les tâches impliquées dans le traitement des appels d'API simultanés, y compris la gestion du trafic, l'autorisation et la surveillance.
Qu'est-ce qu'une API ?
Une API est une interface qui permet à une application de consommer facilement les fonctionnalités ou les données d'une autre application. En définissant des points d'entrée stables, simples et bien documentés, les API permettent aux développeurs d'accéder facilement à la logique d'application créée par d'autres développeurs et de la réutiliser.
Par exemple, le tableau suivant décrit un exemple d'API REST pouvant renvoyer des informations sur un livre :
Propriété | Valeur | Description |
---|---|---|
URL | https://www.mybooksapi.com/books/info | Renvoyez le titre, l'auteur et la date de publication d'un livre en fonction de son numéro ISBN (International Standard Book Number). |
Verbe HTTP | GET | Envoyez une requête GET à l'API. |
Paramètre de requête | isbn
|
Transmettez le numéro ISBN du livre, c'est-à-dire l'ID du livre. |
Données de réponse | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
Objet JSON contenant des informations sur un livre. |
Code de réponse | 200 | Demande transmise. |
À l'aide de ces informations, vous pouvez envoyer la requête cURL suivante à cette API pour obtenir des informations sur un livre :
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Étant donné que ce service dispose d'une API bien définie, y compris d'une description des formats de données et des codes de réponse HTTP, le développeur d'applications n'a pas besoin de connaître l'implémentation sous-jacente du service de backend.
Étant donné que les applications qui consomment des API sont sensibles aux modifications, les API impliquent également un contrat entre les fournisseurs et les consommateurs d'API. Le contrat garantit que l'API évoluera de manière prévisible au fil du temps. Par exemple, l'API Books peut être mise à jour pour ajouter des paramètres de requête supplémentaires, tels que title
ou author
, ou pour modifier la réponse JSON afin d'ajouter des informations supplémentaires sur le livre.
Définir une API
Vous définissez une API déployée sur API Gateway en tant que spécification OpenAPI 2.0. Les principaux composants d'une définition d'API sont les suivants :
- URL (ou point d'entrée) du service de backend
- Le format des données transmises dans le cadre d'une requête adressée à l'API
- Le format des données renvoyées par le service dans la réponse de l'API
- Mécanisme d'authentification utilisé pour contrôler l'accès au service
Après avoir défini votre API, utilisez l'interface de ligne de commande gcloud pour l'importer dans une configuration d'API sur GCP :
Déployer une configuration d'API sur API Gateway
Pour créer votre API, vous devez déployer la configuration de l'API sur API Gateway.
Exécutez la commande gcloud
pour déployer la configuration d'API :
Une fois la configuration de l'API déployée, vos clients peuvent effectuer des appels REST vers l'API.
Gérer une API
Une fois déployée et en cours d'exécution, vous pouvez surveiller l'activité de l'API, comme les métriques d'utilisation et les journaux. Lorsqu'un client envoie une requête à votre API, API Gateway enregistre des informations sur la requête et la réponse. API Gateway suit également la latence, le trafic et les erreurs.
Au fil du temps, vous pouvez souhaiter mettre à jour une API déployée pour ajouter de nouvelles fonctionnalités, améliorer les performances ou résoudre des problèmes liés à l'API. Pour mettre à jour une API déployée, il vous suffit de mettre à jour la spécification OpenAPI de la définition de l'API, puis d'importer et de redéployer l'API.
Contrôler l'accès à l'API
API Gateway vous permet de configurer l'API de façon à exiger une authentification pour que le client puisse accéder à l'API. Actuellement, API Gateway est compatible avec le même mécanisme d'authentification et la même syntaxe que ceux utilisés par Cloud Endpoints, y compris :
Vous pouvez également utiliser la console Google Cloud Platform pour partager votre API avec d'autres développeurs afin qu'ils puissent l'activer et générer des clés d'API pour l'appeler.
En plus de définir un mécanisme d'authentification pour valider l'identité d'un utilisateur, votre API doit également décider de ce que l'utilisateur authentifié peut faire avec votre API. Pour en savoir plus, consultez le guide d'authentification GCP.