Académique Documents
Professionnel Documents
Culture Documents
API REST
Table des
matières
Objectifs
5. Exemples d'API
7. SÉCURITÉ
8. VERSIONING
9. DOCUMENTATION
Illustration :
- Par exemple, l'API conçue pour un service de météo peut demander à l'utilisateur de fournir un code
postal et au producteur de renvoyer une réponse en deux parties : la première concernant la température
maximale et la seconde la température minimale.
- En d'autres termes, lorsque vous souhaitez interagir avec un ordinateur ou un système pour récupérer des
informations ou exécuter une fonction, une API permet d'indiquer au système ce que vous attendez de lui,
afin qu'il puisse comprendre votre demande et y répondre.
Vous pouvez vous représenter une API comme un médiateur entre les utilisateurs ou clients et les
- ressources ou services web auxquels ils souhaitent accéder. Pour une entreprise, c'est aussi une solution
pour partager des ressources et des informations, tout en maintenant un certain niveau de sécurité, de
contrôle et d'authentification, en déterminant qui est autorisé à accéder à quoi.
- Les API sont de plus en plus utilisées dans le milieu professionnel car elles répondent à plusieurs besoins.
Elles permettent la création flexible d'application et de moderniser les structures des sites web et
applications métier.
- Une API offre la possibilité aux entreprises d'ouvrir leurs données à leurs clients, fournisseurs et
partenaires de manière sécurisée. Tout est interconnectable plus facilement, ce qui représente un gain de
temps et d'efficacité pour les équipes de développeurs.
- Les API permettent d'étendre le SI des entreprises grâce à l'interopérabilité des systèmes. Les échanges de
données entre les différentes applications sont possibles dans toutes circonstances.
Comment fonctionne une API ?
Comment fonctionne une API ?
5. Exemples d'API
Les APIs et les SDK pour Google Maps
- Google Maps est un exemple très connu d'intégration d'API. C'est un célèbre service de cartes de
navigation en ligne.
- Sur la plate-forme Google Maps, les développeurs peuvent accéder à des SDK et à des API qu'ils pourront
intégrer dans leurs propres applications, programmes et sites internet de façon rapide et simple.
- Grâce à l'API Maps JavaScript, les propriétaires de sites internet peuvent par exemple ajouter des cartes
interactives en toute simplicité.
- Cette possibilité est particulièrement intéressante pour les boutiques et les restaurants dont le succès
commercial dépend souvent de la capacité de leurs clients à trouver leurs locaux.
GraphQL
SOAP
GraphXL
SIGNAL
RESTE
REST
Présentation d'une API REST
Présentation d'une API REST
- REST est un ensemble de contraintes architecturales. Il ne s'agit ni d'un protocole, ni d'une norme.
Les développeurs d'API peuvent mettre en œuvre REST de nombreuses manières.
- Lorsqu'un client émet une requête par le biais d'une API RESTful, celle-ci transfère une représentation
de l'état de la ressource au demandeur ou point de terminaison.
- Cette information, ou représentation, est fournie via le protocole HTTP dans l'un des formats suivants :
JSON (JavaScript Object Notation), XML, etc.
- Le format de données le plus utilisé est JSON, car, contrairement à ce que son nom indique, il ne dépend
pas d'un langage et peut être lu aussi bien par les humains que par les machines.
Les données REST sont représentées dans ce qu'on appelle des ressources.
Une ressource ou ressource web peut être tout type d'objet nominal (on lui attribue un nom) que vous pouvez
utiliser pour représenter les données dans votre application.
Les ressources sont regroupées dans un groupe que l'on appelle une collection. On s'y réfère avec la forme au
pluriel du nom de la ressource.
Toutes les ressources exposées par votre API ne nécessitent pas le même niveau de vigilance. On distingue deux
types de ressources.
- Ressources publiques
Comme leur nom l'indique, les informations contenues dans ces ressources sont publiques. Par exemple,
/products ou /offers sont des ressources qui sont probablement faciles à consulter sur votre site Internet,
sans aucune connexion préalable de l'utilisateur.
Même si les données exposées sont publiques, il est conseillé d'utiliser une passerelle d'API (les passerelles
d'API régissent le trafic des API) ou de mettre en place une stratégie d'API-KEY. Cela vous permettra de
gérer les quotas d'utilisation des ressources et donc d'éviter des abus, et analyser l'utilisation des API.
- Ressources privées
Il s'agit de ressources auxquelles tout le monde ne doit pas avoir accès, en général des informations qui
sont propres à un utilisateur : un historique de commandes, des informations bancaires, des données
personnelles, etc. De telles informations ne doivent être accessibles que par leur propriétaire.
- REST est une architecture orientée ressources où chaque ressource est accessible via un identifiant unique
(URI).
- Le path (ou chemin) que vous donnez à votre API lui permet de savoir exactement où se trouvent les
données que vous voulez récupérer.
- Si une ressource est l'objet qui stocke vos données, pour les récupérer vous allez avoir besoin d'un
identifiant de ressource uniforme, ou URI pour Uniform Resource Identifier. L'URI est le moyen
d'identifier votre ressource, comme une étiquette.
- Un endpoint est une URL/URI qui fait partie d'une API. Si un URI est comme un chemin de fichier, alors
un endpoint est comme l'adresse complète du fichier.
- L'URL de la requête est l'endpoint complet que vous utilisez pour votre requête. Il associe le nom de
domaine + le path de votre ressource.
- Un endpoint est de la forme : http://api.example.com/collection/
HATEOAS
Par définition, HATEOAS (Hypermedia As The Engine Of Application State) est une contrainte sur la présence
de liens au niveau des ressources pour permettre une navigation exploratoire.
Malgré l'omniprésence de cette contrainte dans le Web (liens hypertexte), elle est rarement intégrée dans les APIs
REST car beaucoup considèrent qu'une bonne documentation est suffisante pour mieux explorer une API.
D'ailleurs, plusieurs grands noms d'Internet dont Facebook, Twitter et Amazon n'ont pas pris en considération ce
niveau 3.
Toutefois, HATEOAS est devenu un terme définissant une API complètement mature.
Ci-dessous un exemple d'une réponse en JSON valide HATEOAS avec les liens self et list.
1{
2 "id": 1,
3 "immat": "aa111aa",
4 "marque": "peugeot",
5 "links": [
6 {
7 "rel": "self",
8 "href": "https://api.site.fr/vehicules/1"
9 },
10 {
11 "rel": "list",
12 "href": "https://api.site.fr/vehicules"
13 }
14 ]
15 }
Comme vous pouvez le constater, les liens sont au niveau de l'attribut links. Pour l'instant, il n'y a aucune règle de
nomenclature sur les attributs. En revanche, il existe des efforts pour standardiser les principes HATEOAS.
JSON-LD et Hydra sont en tête de course pour être adoptés par le W3C.
LES VERBES ou METHODES HTTP
LES VERBES ou METHODES HTTP
Par exemple une API REST qui gère des articles d'un blog pourrait mettre à disposition les actions suivantes :
JSON
Beaucoup d'API récentes ont adopté JSON comme format car il est construit à partir du langage de
programmation JavaScript, que l'on trouve employé partout maintenant sur le web et qui est utilisable à la fois en
front-end et en back-end. JSON est un format extrêmement simple qui comporte deux parties : les clés (keys) et
les valeurs (values). Les clés représentent un attribut de l'objet que l'on décrit.
Voyons à quoi ressemblerait notre commande en JSON :
1{
2 "pâte": "originale",
3 "garniture": ["fromage", "pepperoni", "ail"],
4 "statut": "en cours de cuisson",
5 "client": {
6 "nom": "Brian",
7 "téléphone": "573-111-1111"
8 }
9}
Dans l'exemple JSON ci-dessus, les clés sont les mots à gauche, ils décrivent les attributs de notre commande de
pizza. Les valeurs sont à droite, ce sont les détails de notre commande.
XML
XML existe depuis 1996 et avec l'âge il s'est transformé en un format de données mature et puissant. Tout comme
JSON, XML fournit des blocs nous permettant de structurer les données. Le bloc principal est appelé un nœud
(node).
Voyons ce que donnerait notre commande en XML :
1 <commande>
2 <pâte>original</pâte>
3 <garnitures>
4 <garniture>fromage</garniture>
5 <garniture>pepperoni</garniture>
6 <garniture>ail</garniture>
7 <garnitures>
8 <statut>en cours de cuisson</statut>
9 </commande><commande>
10 <pâte>original</pâte>
11 <garnitures>
12 <garniture>fromage</garniture>
13 <garniture>pepperoni</garniture>
14 <garniture>ail</garniture>
15 <garnitures>
16 <statut>en cours de cuisson</statut>
17 </commande>
XML commence toujours avec un noeud racine (root node), qui dans notre exemple est "commande". À
l'intérieur, on trouve des noeuds "enfants". Le nom de chacun nous renseigne sur l'attribut de la commande
(comme les clés en JSON) et les données à l'intérieur sont les détails (comme les valeurs en JSON)
SÉCURITÉ
SÉCURITÉ
7. SÉCURITÉ
D'une manière générale, une API est censée être sécurisée et protégée contre les requêtes anonymes.
En pratique, trois techniques sont principalement utilisées pour sécuriser une API:
- HTTP Basic Authentication
- Oauth
- OpenID
>> HTTP Basic Authentication
Il s'agit de la solution la plus simple. Consiste à envoyer le login et le mot de passe dans l'entête de chaque
requête.
Bien évidemment, il est fortement conseillé d'utiliser le protocole HTTP en mode chiffré (HTTPS) pour ne pas
circuler le mot de passe en claire dans les trames réseaux (faille aux attaques de type MITM).
Pour plus de sécurité, surtout si le client de l'API est à l'extérieur de votre réseau, il est préconisé d'utiliser un
jeton de sécurité JWT (Json Web Token). Le JWT devrait avoir une durée de vie (TTL) limitée.
>> Oauth
Oauth est un protocole de délégation d'autorisation nécessitant un serveur tiers comme fournisseur d'accès.
Malgré la complexité de sa mise en place, ce protocole est très apprécié pour sa sécurité.
Il existe deux versions:
Oauth 1.0 – Il s'agit de la version la plus dure à mettre en place car nécessite un partage de clé entre client et
serveur pour le calcul d'une signature (même principe que SSL). Cette version est recommandée pour les APIs
sans HTTPS.
Oauth 2.0 – Cette version est plus aisée à mettre en place car ne dispose pas de calcul de signature. Par contre, en
l'occurrence le HTTPS est exigé. Néanmoins, cette version est moins sécurisée que Oauth 1.0.
>> OpenID
De base, OpendID est un système d'identification en mode SSO. Il permet à un client de se connecter auprès de
plusieurs sites sans devoir créer un compte à chaque fois.
Le mode de fonctionnement ressemble à celui de Oauth. Il faut un fournisseur d'identité (OpendID providers)
pour établir un lien de confiance entre le client et le serveur. Souvent, le fournisseur d'identité est un grand nom du
Web (facebook, twitter, google, ...).
D'autre part, cette solution ne permet pas de gérer l'authentification. De ce fait, il existe une deuxième version
(OpenID Connect) qui intègre une sous couche Oauth.
VERSIONING
VERSIONING
8. VERSIONING
Comme toute chose dans la vie, une API est amenée à bouger dans le temps.
Les modifications au niveau des ressources sont souvent problématiques car nécessitent des mises à jour côté
client qui peuvent s'avérer très compliqués, surtout si ce dernier est en dehors du périmètre (partenaire ou
application mobile). De ce fait, il est préconisé de ne pas modifier les services mais plutôt d'en créer de nouveaux.
En général, il y a trois façons de versioning:
- Via l'URL – Consiste à rajouter le numéro de version dans l'URL de chaque ressource.
- Via l'entête HTTP – S'appuie sur des mécanismes d'identification de version depuis l'entête de la requête
(AcceptHeaderVersioning).
- Via les paramètres – Dans ce type de gestion, la version est passée dans les paramètres de la requête.
Même si cela peut paraître confus avec l'une des contraintes du REST (Uniform interface), le versioning via
l'URL est la solution la plus adoptée dans les APIs.
DOCUMENTATION
DOCUMENTATION
9. DOCUMENTATION
La documentation est un élément central pour faire en sorte que les personnes puissent exploiter une API. Il est
important que cette documentation soit rédigée par les développeurs eux-même.
Voici deux solutions pour la mise en oeuvre d'une documentation efficace:
- CARTE – Solution basée sur Jekyll.
- http://apidocjs.com/ – Solution en Javascript (Node.js).
API MANAGEMENT
API MANAGEMENT
un protocole web
un design pattern
un ensemble de protocoles