Si vous avez passé du temps avec le développement Web moderne, vous aurez rencontré des termes tels que REST et API. Si vous avez entendu parler de ces termes ou si vous utilisez des API, mais que vous ne comprenez pas parfaitement leur fonctionnement ni comment construire votre propre API, cette série est pour vous..
Dans cette série de didacticiels, nous commencerons par un aperçu des principes et des concepts REST. Ensuite, nous allons créer notre propre API à part entière qui s’exécute sur un serveur Node.js Express et se connecte à une base de données MySQL. Une fois cette série terminée, vous devez être sûr de créer votre propre API ou de plonger dans la documentation d’une API existante..
Pour tirer le meilleur parti de ce didacticiel, vous devez déjà posséder des connaissances de base en ligne de commande, connaître les bases de JavaScript et installer Node.js dans le monde entier..
Transfert d'État par représentation, ou DU REPOS, décrit un style architectural pour les services Web. REST consiste en un ensemble de normes ou de contraintes permettant de partager des données entre différents systèmes. Les systèmes qui implémentent REST sont appelés RESTful. REST est un concept abstrait, pas un langage, un framework ou un type de logiciel.
Une analogie lâche pour REST consisterait à conserver une collection de vinyles par opposition à l’utilisation d’un service de musique en streaming. Avec la collection de disques vinyle, chaque disque doit être dupliqué dans son intégralité pour pouvoir être partagé et distribué. Avec un service de streaming, cependant, la même musique peut être partagée à perpétuité via une référence à certaines données telles qu'un titre de chanson. Dans ce cas, la musique en streaming est un service RESTful et la collection de vinyles est un service non RESTful..
Un API est une interface de programmation d'application, qui permet aux programmes logiciels de communiquer entre eux. UNE API RESTful est simplement une API qui respecte les principes et les contraintes de REST. Dans une API Web, un serveur reçoit une demande via un point de terminaison d'URL et envoie un réponse en retour, qui est souvent des données dans un format tel que JSON.
Six contraintes de guidage définissent l'architecture REST, décrites ci-dessous..
Vous savez déjà que tous les sites Web ont une URL commençant par http
(ou https
pour la version sécurisée). HyperText Transfer Protocol, ou HTTP, est la méthode de communication entre les clients et les serveurs sur Internet.
Nous le voyons bien évidemment dans la barre d’URL de nos navigateurs, mais HTTP ne sert pas uniquement à demander des sites Web à des serveurs. Lorsque vous accédez à une URL sur le Web, vous effectuez une OBTENIR
demande sur cette ressource spécifique, et le site Web que vous voyez est le corps de la réponse. Nous allons passer en revue OBTENIR
et d'autres types de demandes sous peu.
HTTP fonctionne en ouvrant un TCP Connexion (protocole de contrôle de transmission) à un port de serveur (80
pour http
, 443
pour https
) pour faire une demande, et le serveur d'écoute répond avec un statut et un corps.
Une demande doit comprendre une URL, une méthode, des informations d’en-tête et un corps..
Il existe quatre méthodes HTTP principales, également appelées verbes HTTP, couramment utilisées pour interagir avec les API Web. Ces méthodes définissent l'action qui sera effectuée avec une ressource donnée.
Les méthodes de requête HTTP correspondent vaguement au paradigme de CRUD, Qui veut dire Créer, mettre à jour, lire, supprimer. Bien que CRUD se réfère aux fonctions utilisées dans les opérations de base de données, nous pouvons appliquer ces principes de conception aux verbes HTTP dans une API RESTful.
action | Méthode de demande | Définition |
---|---|---|
Lis | OBTENIR | Récupère une ressource |
Créer | POSTER | Crée une nouvelle ressource |
Mettre à jour | METTRE | Met à jour une ressource existante |
Effacer | EFFACER | Supprime une ressource |
OBTENIR
est une opération sécurisée en lecture seule qui ne modifiera pas l'état d'un serveur. Chaque fois que vous tapez une URL dans votre navigateur, telle que https://www.google.com
, vous envoyez un OBTENIR
demande aux serveurs de Google.
POSTER
est utilisé pour créer une nouvelle ressource. Un exemple familier de POSTER
est inscrit en tant qu'utilisateur sur un site Web ou une application. Après avoir soumis le formulaire, un POSTER
une requête contenant les données de l'utilisateur peut être envoyée au serveur, qui écrit ensuite ces informations dans une base de données.
METTRE
met à jour une ressource existante, qui peut être utilisée pour modifier les paramètres d'un utilisateur existant. contrairement à POSTER
, METTRE
est idempotent, signifiant que le même appel peut être fait plusieurs fois sans produire un résultat différent. Par exemple, si vous avez envoyé le même POSTER
demande de créer un nouvel utilisateur dans une base de données plusieurs fois, cela créerait un nouvel utilisateur avec les mêmes données pour chaque demande que vous avez faite. Cependant, en utilisant le même METTRE
demande sur le même utilisateur produirait en permanence le même résultat.
EFFACER
, comme son nom l'indique, supprimera simplement une ressource existante.
Une fois qu'une requête du client au serveur est envoyée, le serveur renvoie une réponse HTTP, qui comprendra des métadonnées sur la réponse, appelées en-têtes, ainsi que le corps. La première et la plus importante partie de la réponse est la code d'état, qui indique si une demande a abouti, s'il y a eu une erreur ou si une autre action doit être entreprise.
Le code de réponse le plus connu que vous connaissez bien est 404
, ce qui signifie Pas trouvé
. 404
fait partie de la 4xx
classe de codes d'état, qui indiquent les erreurs du client. Il existe cinq classes de codes d’état contenant chacune une gamme de réponses..
1xx
: Information2xx
: Succès3xx
: Redirection4xx
: Erreur du client5xx
: Erreur du serveurD'autres réponses courantes que vous connaissez peut-être sont 301 Déménagé Définitivement
, qui est utilisé pour rediriger les sites Web vers de nouvelles URL, et 500 Erreur interne du serveur
, Il s'agit d'une erreur fréquente lorsqu'un événement imprévu s'est produite sur un serveur et qui empêche de répondre à la demande..
En ce qui concerne les API RESTful et leurs verbes HTTP correspondants, toutes les réponses doivent être dans le 2xx
intervalle.
Demande | Réponse |
---|---|
OBTENIR | 200 (D'ACCORD) |
POSTER | 201 (Créé) |
METTRE | 200 (D'ACCORD) |
EFFACER | 200 (D'ACCORD), 202 (Accepté), ou 204 (Pas content) |
200 OK
est la réponse qui indique qu'une demande a abouti. Il est utilisé comme réponse lors de l'envoi d'un message. OBTENIR
ou METTRE
demande. POSTER
retournera un 201 créé
pour indiquer qu'une nouvelle ressource a été créée, et EFFACER
a quelques réponses acceptables, qui indiquent que la demande a été acceptée (202
), ou il n’ya pas de contenu à renvoyer car la ressource n’existe plus (204
).
Nous pouvons tester le code d'état d'une demande de ressource en utilisant cURL, un outil de ligne de commande utilisé pour transférer des données via des URL. En utilisant boucle
, suivi du -je
ou --comprendre
drapeau, enverra un OBTENIR
demande à une URL et affiche les en-têtes et le corps. Nous pouvons le tester en ouvrant le programme en ligne de commande et en testant cURL avec Google.
curl -i https://www.google.com
Le serveur de Google répondra avec ce qui suit.
HTTP / 2 200 date: mar., 14 août 2018, 17h15 GMT expire: -1 contrôle de cache: privé, max-age = 0 type de contenu: text / html; jeu de caractères = ISO-8859-1…
Comme on peut le voir, le boucle
request renvoie plusieurs en-têtes et l'intégralité du corps HTML de la réponse. Depuis que la demande a été traitée avec succès, la première partie de la réponse est la 200
code de statut, ainsi que la version de HTTP (HTTP / 1.1 ou HTTP / 2).
Comme cette demande particulière renvoie un site Web, le type de contenu
(Type MIME) renvoyé est texte / html
. Dans une API RESTful, vous verrez probablement application / json
pour indiquer que la réponse est JSON.
Fait intéressant, nous pouvons voir un autre type de réponse en entrant une URL légèrement différente. Fait une boucle
sur Google sans le www
.
curl -i https://google.com
HTTP / 2 301 emplacement: https://www.google.com/ content-type: text / html; jeu de caractères = UTF-8
Google redirections google.com
à www.google.com
, et utilise un 301
réponse pour indiquer que la ressource doit être redirigée.
Lorsqu'une API est créée sur un serveur, les données qu'elle contient sont accessibles via les points de terminaison. Un point final est l'URL de la demande pouvant accepter et traiter le OBTENIR
, POSTER
, METTRE
, ou EFFACER
demande.
Une URL d’API se composera de la racine, du chemin d’accès et de la chaîne de requête facultative..
https://api.example.com
ou https://api.example.com/v2
: La racine de l'API, qui peut comprendre le protocole, le domaine et la version./utilisateurs/
ou / utilisateurs / 5
: Emplacement unique de la ressource spécifique.?location = chicago & age = 29
: Paires de valeurs de clé facultatives utilisées pour le tri, le filtrage et la pagination.limite
filtrer les réponses pour n'inclure que dix résultats.https://api.example.com/users?limit=10
En règle générale, lorsque les utilisateurs font référence à une API en tant qu'API RESTful, ils font référence aux conventions de dénomination prises en compte lors de la création de points de terminaison d'URL d'API. Voici quelques conventions importantes pour une API RESTful standard:
5
, nous utiliserions / utilisateurs / 5
, ne pas / utilisateur / 5
..JSON
.ajouter
et effacer
ne devrait pas apparaître dans une URL REST. Pour ajouter un nouvel utilisateur, il vous suffit d'envoyer un message POSTER
demande à /utilisateurs
, pas quelque chose comme / utilisateurs / add
. L'API doit être développée pour gérer plusieurs types de demandes à la même URL..Toutes ces conventions sont des directives, car il n'y a pas de normes REST strictes à suivre. Cependant, en utilisant ces instructions, votre API sera cohérente, familière et facile à lire et à comprendre..
Dans cet article, nous avons appris ce que sont les API REST et RESTful, le fonctionnement des méthodes de requête HTTP et des codes de réponse, la structure d'une URL d'API et les conventions courantes de l'API RESTful. Dans le prochain tutoriel, nous allons apprendre à utiliser toute cette théorie en configurant un serveur Express avec Node.js et en construisant notre propre API..