Qu'est-ce qu'une API RESTful ?
L'API RESTful est une interface que deux systèmes informatiques utilisent pour échanger des informations en toute sécurité sur Internet. La plupart des applications commerciales doivent communiquer avec d'autres applications internes et tierces pour accomplir différentes tâches. Par exemple, pour générer des fiches de paie mensuelles, votre système de comptabilité interne doit partager des données avec le système bancaire de votre client pour automatiser la facturation, et communiquer avec une application interne de feuille de temps. Les API RESTful prennent en charge ces échanges d'informations en suivant des standards de communication logiciels sûrs, fiables et efficaces.
Qu'est-ce qu'une API ?
Une interface de programme d'application (API) définit les règles que vous devez suivre pour communiquer avec d'autres systèmes logiciels. Les développeurs exposent ou créent des API afin que d'autres applications puissent communiquer avec leurs applications de manière programmatique. Par exemple, l'application de feuille de temps expose une API qui demande le nom complet d'un employé et une plage de dates. Lorsqu'il reçoit ces informations, il traite en interne la feuille de temps de l'employé et renvoie le nombre d'heures travaillées dans cette plage de dates.
Vous pouvez considérer une API Web comme une passerelle entre les clients et les ressources sur le Web.
Clients
Les clients sont des utilisateurs qui veulent accéder à des informations à partir du Web. Le client peut être une personne ou un système logiciel qui utilise l'API. Par exemple, les développeurs peuvent écrire des programmes qui accèdent aux données météorologiques d'un système météorologique. Ou vous pouvez accéder aux mêmes données à partir de votre navigateur lorsque vous visitez directement le site Web de la météo.
Ressources
Les ressources sont les informations que les différentes applications fournissent à leurs clients. Les ressources peuvent être des images, des vidéos, du texte, des chiffres ou tout type de données. La machine qui fournit la ressource au client est également appelée le serveur. Les organisations utilisent les API pour partager des ressources et fournir des services Web tout en maintenant la sécurité, le contrôle et l'authentification. En outre, les API les aident à déterminer quels clients ont accès à des ressources internes spécifiques.
Qu'est-ce que REST ?
Representational State Transfer (REST) est une architecture logicielle qui impose des conditions sur la façon dont une API doit fonctionner. REST a été initialement créé comme une ligne directrice pour gérer la communication sur un réseau complexe comme l'Internet. Vous pouvez utiliser une architecture basée sur REST pour prendre en charge une communication performante et fiable à grande échelle. Vous pouvez facilement l'implémenter et le modifier, ce qui apporte visibilité et portabilité entre plateformes à tout système d'API.
Les développeurs d'API peuvent concevoir des API en utilisant plusieurs architectures différentes. Les API qui suivent le style architectural REST sont appelées API REST. Les services Web qui mettent en œuvre l'architecture REST sont appelés services Web RESTful. Le terme API RESTful fait généralement référence aux API Web RESTful. Cependant, vous pouvez utiliser les termes API REST et API RESTful de manière interchangeable.
Voici quelques-uns des principes du style architectural REST :
Interface uniforme
L'interface uniforme est fondamentale pour la conception de tout service Web RESTful. Elle indique que le serveur transfère les informations dans un format standard. La ressource formatée est appelée représentation dans REST. Ce format peut être différent de la représentation interne de la ressource sur l'application serveur. Par exemple, le serveur peut stocker des données sous forme de texte mais les envoyer dans un format de représentation HTML.
L'interface uniforme impose quatre contraintes architecturales :
- Les demandes doivent identifier les ressources. Pour ce faire, ils utilisent un identifiant de ressource uniforme.
- Les clients disposent de suffisamment d'informations dans la représentation de la ressource pour modifier ou supprimer la ressource s'ils le souhaitent. Le serveur répond à cette condition en envoyant des métadonnées qui décrivent plus précisément la ressource.
- Les clients reçoivent des informations sur la manière de poursuivre le traitement de la représentation. Le serveur y parvient en envoyant des messages autodescriptifs qui contiennent des métadonnées sur la manière dont le client peut les utiliser au mieux.
- Les clients reçoivent des informations sur toutes les autres ressources connexes dont ils ont besoin pour accomplir une tâche. Le serveur y parvient en envoyant des hyperliens dans la représentation afin que les clients puissent découvrir dynamiquement d'autres ressources.
Apatridie (Statelessness)
Dans l'architecture REST, l'apatridie désigne une méthode de communication dans laquelle le serveur traite chaque demande du client indépendamment de toutes les demandes précédentes. Les clients peuvent demander des ressources dans n'importe quel ordre, et chaque demande est sans état (apatride) ou isolée des autres demandes. Cette contrainte de conception de l'API REST implique que le serveur peut parfaitement comprendre et satisfaire la demande à chaque fois.
Système en couches
Dans une architecture de système en couches, le client peut se connecter à d'autres intermédiaires autorisés entre le client et le serveur, et il recevra toujours des réponses du serveur. Les serveurs peuvent également transmettre des demandes à d'autres serveurs. Vous pouvez concevoir votre service Web RESTful pour qu'il s'exécute sur plusieurs serveurs avec plusieurs couches telles que la sécurité, l'application et la logique métier, travaillant ensemble pour répondre aux demandes des clients. Ces couches restent invisibles pour le client.
Capacité de mise en cache
Les services Web RESTful prennent en charge la mise en cache, qui consiste à stocker certaines réponses sur le client ou sur un intermédiaire pour améliorer le temps de réponse du serveur. Par exemple, supposons que vous visitez un site Web dont les images d'en-tête et de pied de page sont communes à toutes les pages. Chaque fois que vous visitez une nouvelle page du site, le serveur doit renvoyer les mêmes images. Pour éviter cela, le client met en cache ou stocke ces images après la première réponse et utilise ensuite les images directement depuis le cache. Les services Web RESTful contrôlent la mise en cache en utilisant des réponses API qui se définissent elles-mêmes comme pouvant être mises en cache ou non.
Code à la demande
Dans le style architectural REST, les serveurs peuvent temporairement étendre ou personnaliser la fonctionnalité du client en transférant le code de programmation du logiciel au client. Par exemple, lorsque vous remplissez un formulaire d'inscription sur un site Web, votre navigateur met immédiatement en évidence les erreurs commises, comme des numéros de téléphone incorrects. Il peut le faire grâce au code envoyé par le serveur.
Quels sont les avantages des API RESTful ?
Les API RESTful présentent les avantages suivants :
Capacité de mise à l'échelle
Les systèmes qui implémentent des API REST sont capables de se mettre à l'échelle efficacement, car REST optimise les interactions client-serveur. L'apatridie supprime la charge du serveur, car celui-ci ne doit pas conserver les informations relatives aux demandes passées du client. Une mise en cache bien gérée élimine partiellement ou complètement certaines interactions client-serveur. Toutes ces caractéristiques favorisent la capacité de mise à l'échelle sans provoquer de goulots d'étranglement de communication qui réduisent les performances.
Flexibilité
Les services Web RESTful prennent en charge la séparation totale client-serveur. Ils simplifient et découplent les différents composants du serveur afin que chaque partie puisse évoluer indépendamment. Les changements de plateforme ou de technologie au niveau de l'application serveur n'affectent pas l'application client. La possibilité de superposer des fonctions d'application augmente encore la flexibilité. Par exemple, les développeurs peuvent apporter des modifications à la couche de base de données sans réécrire la logique de l'application.
Indépendance
Les API REST sont indépendantes de la technologie utilisée. Vous pouvez écrire des applications client et serveur dans divers langages de programmation sans affecter la conception de l'API. Vous pouvez également changer la technologie sous-jacente de part et d'autre sans affecter la communication.
Comment fonctionnent les API RESTful ?
La fonction de base d'une API RESTful est la même que celle de la navigation sur Internet. Le client contacte le serveur en utilisant l'API lorsqu'il a besoin d'une ressource. Les développeurs d'API expliquent comment le client doit utiliser l'API REST dans la documentation de l'API de l'application serveur. Ce sont les étapes générales de tout appel d'API REST :
- Le client envoie une requête au serveur. Le client suit la documentation de l'API pour formater la requête de manière à la rendre compréhensible pour le serveur.
- Le serveur authentifie le client et confirme que ce dernier a le droit de faire cette demande.
- Le serveur reçoit la demande et la traite en interne.
- Le serveur renvoie une réponse au client. La réponse contient des informations qui indiquent au client si la demande a abouti. La réponse comprend également toute information demandée par le client.
Les détails de la demande et de la réponse de l'API REST varient légèrement en fonction de la façon dont les développeurs de l'API conçoivent cette dernière.
Que contient la requête client de l'API RESTful ?
Les API RESTful exigent que les demandes contiennent les principaux composants suivants :
Identifiant unique de la ressource
Le serveur identifie chaque ressource avec des identifiants de ressources uniques. Pour les services REST, le serveur effectue généralement l'identification des ressources en utilisant un localisateur de ressources uniformes (URL, Uniform Resource Locator). L'URL spécifie le chemin d'accès à la ressource. Une URL est similaire à l'adresse du site Web que vous saisissez dans votre navigateur pour visiter n'importe quelle page Web. L'URL est également appelée point de terminaison de la demande et indique clairement au serveur ce dont le client a besoin.
Méthode
Les développeurs mettent souvent en œuvre des API RESTful en utilisant le protocole de transfert hypertexte (HTTP, Hypertext Transfer Protocol). Une méthode HTTP indique au serveur ce qu'il doit faire à la ressource. Voici quatre méthodes HTTP courantes :
GET
Les clients utilisent GET pour accéder aux ressources qui se trouvent à l'URL spécifié sur le serveur. Ils peuvent mettre en cache les requêtes GET et envoyer des paramètres dans la requête RESTful API pour demander au serveur de filtrer les données avant de les envoyer.
POST
Les clients utilisent POST pour envoyer des données au serveur. Ils incluent la représentation des données avec la requête. Envoyer plusieurs fois la même requête POST a pour effet secondaire de créer plusieurs fois la même ressource.
PUT
Les clients utilisent PUT pour mettre à jour les ressources existantes sur le serveur. Contrairement à POST, envoyer plusieurs fois la même requête PUT dans un service Web RESTful donne le même résultat.
DELETE
Les clients utilisent la requête DELETE pour prélever la ressource. Une requête DELETE peut modifier l'état du serveur. Toutefois, si l'utilisateur ne dispose pas d'une authentification appropriée, la requête échoue.
En-têtes HTTP
Les en-têtes de requête sont les métadonnées échangées entre le client et le serveur. Par exemple, l'en-tête de requête indique le format de la requête et de la réponse, fournit des informations sur le statut de la requête, etc.
Données
Les requêtes API REST peuvent inclure des données pour que les méthodes POST, PUT et autres méthodes HTTP fonctionnent correctement.
Paramètres
Les requêtes API RESTful peuvent inclure des paramètres qui donnent au serveur plus de détails sur ce qui doit être fait. Voici quelques types de paramètres différents :
- Paramètres de chemin qui spécifient les détails de l'URL.
- Paramètres de requête qui demandent plus d'informations sur la ressource.
- Paramètres de cookies qui permettent d'authentifier rapidement les clients.
Quelles sont les méthodes d'authentification des API RESTful ?
Un service Web RESTful doit authentifier les requêtes avant de pouvoir envoyer une réponse. L'authentification est le processus de vérification d'une identité. Par exemple, vous pouvez prouver votre identité en montrant une carte d'identité ou un permis de conduire. De même, les clients des services RESTful doivent prouver leur identité au serveur pour établir une relation de confiance.
L'API RESTful dispose de quatre méthodes d'authentification courantes :
Authentification HTTP
HTTP définit certains schémas d'authentification que vous pouvez utiliser directement lorsque vous mettez en œuvre une API REST. Voici deux de ces schémas :
Authentification de base
Dans l'authentification de base, le client envoie le nom d'utilisateur et le mot de passe dans l'en-tête de la requête. Il les encode avec base64, qui est une technique d'encodage qui convertit la paire en un ensemble de 64 caractères pour une transmission sûre.
Authentification du porteur
Le terme authentification du porteur désigne le processus consistant à donner le contrôle d'accès au porteur du jeton. Le jeton de porteur est généralement une chaîne de caractères chiffrée que le serveur génère en réponse à une demande de connexion. Le client envoie le jeton dans les en-têtes de la requête pour accéder aux ressources.
Les clés d'API
Les clés API sont une autre option pour l'authentification des API REST. Dans cette approche, le serveur attribue une valeur générée unique à un client qui se présente pour la première fois. Chaque fois que le client essaie d'accéder aux ressources, il utilise la clé API unique pour se vérifier. Les clés API sont moins sûres, car le client doit transmettre la clé, ce qui la rend vulnérable au vol sur le réseau.
OAuth
OAuth combine mots de passe et jetons pour un accès hautement sécurisé à tout système. Le serveur demande d'abord un mot de passe, puis un jeton supplémentaire pour compléter le processus d'autorisation. Il peut vérifier le jeton à tout moment et aussi dans le temps avec une portée et une longévité spécifiques.
Que contient la réponse du serveur de l'API RESTful ?
Selon les principes REST, la réponse du serveur doit contenir les principaux composants suivants :
Ligne d'état
La ligne d'état contient un code d'état à trois chiffres qui indique le succès ou l'échec de la requête. Par exemple, les codes 2XX indiquent un succès, mais les codes 4XX et 5XX indiquent des erreurs. Les codes 3XX indiquent une redirection d'URL.
Voici quelques codes d'état courants :
- 200 : réponse générique de succès
- 201 : réponse de succès de la méthode POST
- 400 : demande incorrecte que le serveur ne peut pas traiter
- 404 : ressource non trouvée
Corps du message
Le corps de la réponse contient la représentation de la ressource. Le serveur sélectionne un format de représentation approprié en fonction de ce que contiennent les en-têtes de la demande. Les clients peuvent demander des informations dans les formats XML ou JSON, qui définissent la manière dont les données sont écrites en texte clair. Par exemple, si le client demande le nom et l'âge d'une personne nommée John, le serveur renvoie une représentation JSON comme suit :
'{"nom":"John", "age":30}'
En-têtes
La réponse contient également des en-têtes ou des métadonnées sur la réponse. Ils donnent plus de contexte sur la réponse et incluent des informations telles que le serveur, l'encodage, la date et le type de contenu.
Comment AWS peut-il vous aider dans la gestion des API RESTful ?
Amazon API Gateway est un service entièrement géré, qui permet aux développeurs de créer, publier, gérer, surveiller et sécuriser facilement des API à n'importe quelle échelle. À l'aide d'API Gateway, vous pouvez créer des API RESTful pour des applications de communication bidirectionnelle en temps réel :
En utilisant API Gateway, vous pouvez :
- Offrir aux utilisateurs des performances à haut débit pour les requêtes et les réponses API.
- Autorisez l'accès à vos APIs avec AWS Identity and Access Management (IAM) et Amazon. Cognito, qui offrent tous deux une prise en charge native d'OAuth.
- Exécutez plusieurs versions de la même API simultanément avec API Gateway,pour itérer, tester et publier rapidement de nouvelles versions.
- Surveillez les métriques de performance et les informations sur les appels d'API, la latence des données et les taux d'erreur d'API Gateway.
Démarrez avec API Gateway en utilisant notre guide étape par étape et en créant un compte AWS aujourd'hui.
AWS : prochaines étapes
Obtenez un accès instantané à l'offre gratuite AWS.