Soyez efficace avec l'API REST !
Vous l'aurez compris, l'API REST est la plus utilisée du web, pourquoi ? :euh: C'est très simple, suivez le guide !
Transformez votre API en API RESTful
Une API est considérée comme RESTful quand elle respecte le principe d'architecture REST qui s'applique aux services web. Les principales contraintes ont été proposées par Roy Fielding et sont les suivantes :
client-server – un mode de communication avec séparation des rôles entre client et serveur ;
stateless server – les requêtes doivent contenir toutes les informations nécessaires au traitement ;
cache – la réponse du serveur doit être mise en mémoire côté client ;
uniform interface – la méthode de communication entre client et serveur doit être sous la forme d'une URL.
Les clés de l'API REST
L'architecture REST s'articule autour de 4 principes clés :
une ressource distribuée sur un serveur distant (mécanisme client-serveur) ;
un identifiant de la ressource (les URL et protocole HTTP) ;
des « verbes » HTTP permettant d’agir sur la ressource (GET, POST, PUT, DELETE non inclus dans l'URI) ;
une représentation de la ressource (la réponse peut avoir plusieurs représentations possibles : HTML, JSON, XML).
Analysez les codes de retour des verbes HTTP !
Lorsque vous envoyez une requête au serveur, le serveur vous renvoie une réponse avec un code d'état retour HTTP qui n'est pas visible dans votre navigateur. Cette réponse peut être positive ou non. C'est pourquoi le protocole HTTP définit quarante codes d'états standard pouvant être utilisés pour transmettre les résultats de la demande d'un client.
Ces codes sont répartis dans les cinq catégories suivantes :
1xx : informatif : communique une information au client ;
2xx : succès : indique que la demande du client a été acceptée avec succès ;
3xx : redirection : indique que le client doit prendre des mesures supplémentaires pour terminer sa demande ;
4xx : erreur du client : indique une erreur de la part du client ;
5xx : erreur du serveur : indique une erreur de la part du serveur.
Voici des exemples de codes d'états.
L'URL http://api.flickr.com/services/rest/?method=flickr.test.echo&name=value&format=json va renvoyer un code d'état 100 dans lequel il sera précisé que la clé de l'API n'est pas valide.
L'URL https://services.esrifrance.fr/arcgis/rest/services/FranceRaster/FranceDOM_FranceRaster_Premium/MapServer?f=jsapi va renvoyer un code d'état 200 qui indique le succès par l'affichage d'une application cartographique :
Séparez le client du serveur
Pour que votre API soit efficace, la séparation des responsabilités entre le client et le serveur est primordiale :
le serveur va s’occuper de la gestion des règles métier et des données ;
le client se concentre sur l’interface utilisateur (une interface peut être une page web, une application mobile, etc.).
En séparant le client et le serveur, la portabilité et la scalabilité (définir la faculté d'un produit informatique à s'adapter aux fluctuations de la demande, en conservant ses différentes fonctionnalités) de votre application sont fortement améliorées. Chaque composant pourra aussi évoluer séparément.
Par exemple, vous pouvez refaire la charte graphique (design) d'un site web sans que l'API côté serveur ne soit modifiée.
Rendez votre API REST fiable et évolutive
Vous souhaitez faire évoluer votre API REST ou une API REST existante ? C'est tout à fait envisageable ! En effet, chaque API REST peut être enrichie par de nouvelles fonctionnalités.
Reprenons l'exemple des timbres du chapitre précédent ; la fonctionnalité "Supprimer tous les timbres" pourrait être implémentée : DELETE http://monsiteweb.fr/stamps/all.
L'ajout de fonctionnalité n'altère en rien la fiabilité de votre API REST. Au contraire, cela montre que vous suivez et maintenez votre API.
L'API REST est indépendante du type de plateforme ou des langages
L'API REST fonctionne indépendamment du type de plateforme (Windows, MacOS, Linux) ou du langage (Java, .NET, Python, etc.) utilisés entre le client et le serveur :
indépendant du langage : par exemple, un service web codé en Java doit pouvoir être accessible et communiquer avec un client codé en Python ou en C++ ;
indépendant de la plateforme : par exemple, un service web dans un environnement Linux doit pouvoir être accessible par un client utilisant un environnement Windows ou un système d'exploitation mobile.
L'API REST n'a plus de secret pour vous ! :zorro: Vous êtes maintenant aguerri sur son utilisation, ses avantages, et son potentiel.
Mais il manque un petit détail : la transmission de l'information entre le client et le serveur. Vous allez l'aborder dans le chapitre suivant.