Cet article est une introduction aux services Web RESTful et une vue d'ensemble de REST et HTTP.
Elle commence une série d'articles sur le développement de l'API REST:
- Introduction Ă l'API REST - Services Web RESTful
- Différences entre REST et SOAP
- Développement d'API REST - qu'est-ce que Contract First (contrat d'abord)?
- Développement d'API REST - qu'est-ce que Code First (code first)?
- API REST - Qu'est-ce que HATEOAS?
- Recommandations de l'API REST - Exemples de conception de services Web dans Java et Spring

REST signifie REpresentational State Transfer (Wikipedia: «transfert de l'état de présentation»). Il s'agit d'une approche architecturale populaire pour créer des API dans le monde moderne.
Vous apprendrez:
- Qu'est-ce que REST?
- Sur quoi l'API REST est-elle basée?
- Comment HTTP est-il utilisé lors de la création d'une API REST?
- Qu'est-ce qu'une ressource?
- Comment définissez-vous les ressources de l'API REST?
- Quelles sont les meilleures pratiques pour développer une API REST?
Qu'est-ce que REST?
REST signifie REpresentational State Transfer. C'Ă©tait un terme inventĂ© Ă l'origine par Roy Fielding, qui Ă©tait Ă©galement l'un des crĂ©ateurs du protocole HTTP. Une caractĂ©ristique distinctive des services REST est qu'ils utilisent au mieux le protocole HTTP. Jetons maintenant un coup d'Ćil Ă HTTP.
Présentation de HTTP
Ouvrons d'abord le navigateur et allons sur la page Web:

Et puis cliquez sur l'une des pages de résultats:

Ensuite, nous pouvons cliquer sur le lien de la page sur laquelle nous sommes:

Et allez sur une autre page:

C'est ainsi que nous naviguons habituellement sur le Web.
Lorsque nous naviguons sur Internet, beaucoup de choses se produisent dans les coulisses. Voici une vue simplifiée de ce qui se passe entre le navigateur et les serveurs exécutés sur les sites Web qu'ils visitent:

Protocole HTTP
Lorsque vous saisissez une URL dans le navigateur, par exemple
www.google.com , une demande au serveur est envoyée au serveur spécifié à l'URL. Ensuite, ce serveur forme et émet la réponse. Le format de ces demandes et réponses est important. Ces formats sont définis par le protocole
HTTP Hyper Text Transfer Protocol .
Lorsque vous tapez l'URL dans le navigateur, il envoie une demande GET au serveur spécifié. Le serveur répond ensuite avec une réponse HTTP qui contient des données
HTML - Hyper Text Markup Language . Le navigateur reçoit alors ce code HTML et l'affiche à l'écran.
Supposons que vous remplissiez un formulaire sur une page Web avec une liste d'éléments. Dans ce cas, lorsque vous cliquez sur le bouton
Soumettre , la demande HTTP
POST est envoyée au serveur.
Services Web HTTP et RESTful
HTTP fournit une couche de base pour la création de services Web. Par conséquent, il est important de comprendre HTTP. Voici quelques abstractions clés.
Ressource
Une ressource est une abstraction clé sur laquelle se concentre le protocole HTTP. Une ressource est tout ce que vous souhaitez montrer au monde extérieur via votre application. Par exemple, si nous écrivons une application de gestion des tùches, les instances de ressources seront les suivantes:
- Utilisateur spécifique
- Tùche spécifique
- Liste des tĂąches
URI de ressource
Lorsque vous développez des services RESTful, vous devez vous concentrer sur les ressources d'application. La façon dont nous identifions une ressource à fournir est de lui attribuer un URI, l'identificateur universel de ressource. Par exemple:
- Créer un utilisateur: POST / utilisateurs
- Supprimer un utilisateur: SUPPRIMER / utilisateurs / 1
- Obtenez tous les utilisateurs: GET / utilisateurs
- Obtenez un utilisateur: GET / users / 1
REST et ressources
Il est important de noter qu'avec REST, vous devez penser Ă l'application en termes de ressources:
Déterminez quelles ressources vous souhaitez ouvrir au monde extérieur.
Utilisez des verbes déjà définis par le protocole HTTP pour effectuer des opérations sur ces ressources.
Voici comment le service REST est généralement implémenté:
- Format d'Ă©change de donnĂ©es : il n'y a aucune restriction. JSON est un format trĂšs populaire, bien que d'autres tels que XML puissent ĂȘtre utilisĂ©s.
- Transport : toujours HTTP. REST est entiÚrement basé sur HTTP.
- DĂ©finition du service : il n'y a pas de norme pour cela et REST est flexible. Cela peut ĂȘtre un inconvĂ©nient dans certains scĂ©narios, car une application consommatrice peut avoir besoin de comprendre les formats de demande et de rĂ©ponse. Cependant, les langages de dĂ©finition d'application Web tels que WADL (Web Application Definition Language) et Swagger sont largement utilisĂ©s.
REST se concentre sur les ressources et l'efficacité avec laquelle vous effectuez des opérations avec elles à l'aide de HTTP.
Composants HTTP
HTTP définit la structure de demande suivante:
- ligne de demande ( ligne de demande ) - définit le type de message
- en-tĂȘtes de demande ( champs d'en-tĂȘte ) - caractĂ©riser le corps du message, les paramĂštres de transmission et d'autres informations
- corps du message ( corps ) - facultatif
HTTP définit la structure suivante pour un message de réponse:
- ligne d'état comprenant le code d'état et le message de raison
- champs d'en-tĂȘte de rĂ©ponse
- corps supplémentaire du message ( corps )
MĂ©thodes de requĂȘte HTTP
La méthode utilisée dans la demande HTTP indique quelle action vous souhaitez effectuer avec cette demande. Exemples importants:
- OBTENIR : obtenir des informations détaillées sur les ressources
- POST : créer une nouvelle ressource
- PUT : mettre Ă jour une ressource existante
- DELETE : supprimer la ressource
Code d'état de réponse HTTP
Le code d'état est toujours présent dans la réponse HTTP. Exemples typiques:
- 200 - succĂšs
- 404 - page introuvable
Sur cette question, il y a une
vidéo d'auteur.
Résumé
Cet article fournit une vue d'ensemble de haut niveau du style architectural REST. Le fait que HTTP soit la principale composante des services REST est souligné. HTTP est un protocole utilisé pour déterminer la structure des demandes et des réponses du navigateur. Nous avons vu que HTTP traite principalement des ressources disponibles sur les serveurs Web. Les ressources sont identifiées à l'aide d'un URI et les opérations sur ces ressources sont effectuées à l'aide de verbes définis par le protocole HTTP.
Enfin, nous avons examiné comment les services REST exploitent au mieux les fonctionnalités offertes par HTTP pour fournir des ressources au monde extérieur. REST n'impose aucune restriction sur les formats de présentation des ressources ou sur la définition d'un service.
Lecture complémentaire
Fondements de l'architecture RESTfulDéveloppement d'API REST