Qu’est-ce qu’une API REST?

Classé dans : Articles | 0

La conception de l’API REST ou RESTful (Transfert d’état de représentation) est conçue pour tirer parti des protocoles existants. Alors que REST peut être utilisé sur presque tous les protocoles, il tire généralement parti de HTTP lorsqu’il est utilisé pour les API Web. Cela signifie que les développeurs n’ont pas besoin d’installer de bibliothèques ou de logiciels supplémentaires pour tirer parti d’une conception d’API REST. La conception de l’API REST a été définie par le Dr Roy Fielding dans sa thèse de doctorat de 2000. Il est remarquable pour son incroyable couche de souplesse., Étant donné que les données ne sont pas liées aux méthodes et aux ressources, REST a la capacité de gérer plusieurs types d’appels, de renvoyer différents formats de données et même de changer structurellement avec l’implémentation correcte d’hypermedia.

Cette liberté et cette flexibilité inhérentes à la conception de l’API REST vous permettent de créer une API qui répond à vos besoins tout en répondant aux besoins de clients très divers. Contrairement à SOAP, REST n’est pas limité à XML, mais peut renvoyer XML, JSON, YAML ou tout autre format en fonction de ce que le client demande., Et contrairement à RPC, les utilisateurs ne sont pas tenus de connaître les noms de procédure ou les paramètres spécifiques dans un ordre spécifique.

Cependant, la conception de l’API REST présente des inconvénients. Vous pouvez perdre la capacité de maintenir l’état dans REST, par exemple dans les sessions, et il peut être plus difficile pour les nouveaux développeurs à utiliser. Il est également important de comprendre ce qui rend une API REST RESTful et pourquoi ces contraintes existent avant de créer votre API. Après tout, si vous ne comprenez pas pourquoi quelque chose est conçu de la manière dont il est, vous pouvez entraver vos efforts sans même vous en rendre compte.,

Comprendre la conception de l’API REST

Bien que la plupart des API prétendent être RESTful, elles ne répondent pas aux exigences et aux contraintes affirmées par le Dr Fielding. Il y a six contraintes clés pour la conception de l’API REST à prendre en compte lorsque vous décidez s’il s’agit du bon type d’API pour votre projet.

Client-Serveur

La contrainte client-serveur fonctionne sur le concept que le client et le serveur doivent être séparés l’un de l’autre et autorisés à évoluer individuellement et indépendamment., En d’autres termes, je devrais pouvoir apporter des modifications à mon application mobile sans affecter ni la structure de données ni la conception de la base de données sur le serveur. Dans le même temps, je devrais pouvoir modifier la base de données ou apporter des modifications à mon application serveur sans affecter le client mobile. Cela crée une séparation des préoccupations, permettant à chaque application de croître et d’évoluer indépendamment de l’autre et permettant à votre organisation de se développer rapidement et efficacement.,

Sans état

Les API REST sont sans état, ce qui signifie que les appels peuvent être effectués indépendamment les uns des autres, et chaque appel contient toutes les données nécessaires pour se terminer avec succès. Une API REST ne doit pas s’appuyer sur les données stockées sur le serveur ou les sessions pour déterminer quoi faire avec un appel, mais plutôt uniquement sur les données fournies dans cet appel lui-même. Les informations d’identification ne sont pas stockées sur le serveur lors des appels. Au lieu de cela, chaque appel contient les données nécessaires, telles que la clé API, le jeton d’accès, l’ID utilisateur, etc., Cela permet également d’augmenter la fiabilité de l’API en disposant de toutes les données nécessaires pour effectuer l’appel, au lieu de s’appuyer sur une série d’appels avec l’état du serveur pour créer un objet, ce qui peut entraîner des échecs partiels. Au lieu de cela, afin de réduire les besoins en mémoire et de garder votre application aussi évolutive que possible, une API RESTful nécessite que tout état soit stocké sur le client—et non sur le serveur.

Cache

Étant donné qu’une API sans état peut augmenter la surcharge des demandes en gérant de grandes quantités d’appels entrants et sortants, une API REST doit être conçue pour encourager le stockage de données pouvant être mises en cache., Cela signifie que lorsque les données sont cachables, la réponse doit indiquer que les données peuvent être stockées jusqu’à un certain temps (expire-at), ou dans les cas où les données doivent être en temps réel, que la réponse ne doit pas être mise en cache par le client. En activant cette contrainte critique, vous réduirez non seulement considérablement le nombre d’interactions avec votre API, réduisant l’utilisation interne du serveur, mais fournirez également aux utilisateurs de votre API les outils nécessaires pour fournir les applications les plus rapides et les plus efficaces possibles. Gardez à l’esprit que la mise en cache se fait du côté client., Bien que vous puissiez mettre en cache certaines données dans votre architecture pour effectuer des performances globales, l’objectif est d’indiquer au client comment procéder et si le client peut stocker les données temporairement.

Interface uniforme

La clé du découplage entre le client et le serveur est d’avoir une interface uniforme qui permet une évolution indépendante de l’application sans que les services, les modèles ou les actions de l’application soient étroitement couplés à la couche API elle-même., L’interface uniforme permet au client de parler au serveur dans une seule langue, indépendamment du backend architectural de l’un ou l’autre. Cette interface doit fournir un moyen de communication standardisé et immuable entre le client et le serveur, tel que l’utilisation de HTTP avec des ressources URI, CRUD (Créer, Lire, Mettre à jour, Supprimer) et JSON.

Système en couches

Comme son nom l’indique, un système en couches est un système composé de couches, chaque couche ayant une fonctionnalité et une responsabilité spécifiques., Si nous pensons à un framework de contrôleur de vue de modèle, chaque couche a ses propres responsabilités, les modèles comprenant la façon dont les données doivent être formées, le contrôleur se concentrant sur les actions entrantes et la vue se concentrant sur la sortie. Chaque couche est séparée mais interagit également avec l’autre. Dans la conception de l’API REST, le même principe est valable, les différentes couches de l’architecture travaillant ensemble pour créer une hiérarchie qui aide à créer une application plus évolutive et modulaire.,

Un système en couches vous permet également d’encapsuler des systèmes hérités et de déplacer des fonctionnalités moins couramment accessibles vers un intermédiaire partagé tout en protégeant les composants plus modernes et couramment utilisés. En outre, le système en couches vous donne la liberté de déplacer les systèmes dans et hors de votre architecture à mesure que les technologies et les services évoluent, augmentant la flexibilité et la longévité tant que vous gardez les différents modules aussi faiblement couplés que possible., Il y a des avantages de sécurité substantiels d’avoir un système en couches car il vous permet d’arrêter les attaques au niveau de la couche proxy, ou dans d’autres couches, les empêchant d’accéder à votre architecture de serveur réelle. En utilisant un système en couches avec un proxy, ou en créant un point d’accès unique, vous êtes en mesure de garder les aspects critiques et plus vulnérables de votre architecture derrière un pare-feu, empêchant l’interaction directe avec eux par le client., Gardez à l’esprit que la sécurité n’est pas basée sur une seule solution « stop all”, mais plutôt sur plusieurs couches, sachant que certains contrôles de sécurité peuvent échouer ou être contournés. En tant que tel, plus la sécurité que vous êtes en mesure d’implémenter dans votre système, plus vous êtes susceptible d’empêcher les attaques dommageables.

Code on Demand

Peut-être la moins connue des six contraintes, et la seule contrainte facultative, Code on Demand permet de transmettre du code ou des applets via l’API pour une utilisation dans l’application., En substance, il crée une application intelligente qui ne dépend plus uniquement de sa propre structure de code. Cependant, peut-être parce qu’il est en avance sur son temps, Code on Demand a eu du mal à être adopté car les API Web sont consommées dans plusieurs langues et la transmission du code soulève des questions et des préoccupations en matière de sécurité. (Par exemple, le répertoire devrait être accessible en écriture et le pare-feu devrait laisser passer ce qui peut normalement être du contenu restreint.)

Ensemble, ces contraintes constituent la théorie du Transfert d’État Représentationnel, ou REST., En regardant en arrière, vous pouvez voir comment chaque contrainte successive s’appuie sur la précédente, créant éventuellement une interface de programme d’application plutôt complexe, mais puissante et flexible. Mais surtout, ces contraintes constituent une conception qui fonctionne de manière similaire à la façon dont nous accédons aux pages de nos navigateurs sur le World Wide Web. Il crée une API qui n’est pas dictée par son architecture, mais par les représentations qu’il renvoie, et une API qui—bien que sans état architectural—s’appuie sur la représentation pour dicter l’état de l’application.,

Pour plus d’informations sur la conception de l’API REST, consultez l’eBook Unsturbed REST: A Guide to Designing the Perfect API.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *