API RESTful Node.js


Qu'est-ce que REST ?

REST (anglais : Representational State Transfer, appelé REST) ​​​​​​est un style d'architecture logicielle proposé par le Dr Roy Fielding dans sa thèse de doctorat en 2000.

La transition d'état représentationnelle est un ensemble de contraintes et de principes architecturaux. Une application ou une conception qui satisfait à ces contraintes et principes est RESTful. Il est important de noter que REST est un style de conception et non un standard. REST est généralement basé sur des protocoles et des normes existants très populaires utilisant HTTP, les URI et XML (un sous-ensemble du langage de balisage généralisé standard) et HTML (une application du langage de balisage généralisé standard). REST utilise généralement le format de données JSON.

Méthodes HTTP

Voici les quatre méthodes de l'architecture de base REST :


  • GET - utilisé pour obtenir des données.

  • PUT - utilisé pour ajouter des données.

  • DELETE - utilisé pour supprimer des données.

  • POST - utilisé pour mettre à jour ou ajouter des données.


Services Web RESTful

Le service Web est une application Web indépendante de la plate-forme, à faible couplage, autonome et programmable qui peut utiliser le XML ouvert. (un sous-ensemble des normes Standard Generalized Markup Language) pour décrire, publier, découvrir, coordonner et configurer ces applications pour le développement d'applications distribuées et interopérables.

Les services Web basés sur l'architecture REST sont RESTful.

L'approche RESTful des services Web est devenue l'alternative la plus courante en raison de sa nature légère et de sa capacité à transférer des données directement via HTTP. Les clients peuvent être implémentés à l'aide de divers langages, tels que Javascript, Perl, Ruby, Python, PHP et Javascript [y compris Ajax].

Les services Web RESTful sont généralement accessibles via des clients ou des applications automatisés au nom des utilisateurs. Cependant, la simplicité de ce service permet aux utilisateurs d'interagir directement avec lui, en utilisant leur navigateur Web pour construire une URL GET et lire le contenu renvoyé.

Pour plus d'introduction, vous pouvez consulter : Explication détaillée de l'architecture RESTful


Création de RESTful

Tout d'abord, créez un fichier de ressources de données JSON users.json , le contenu est le suivant :

{
   "user1" : {
      "name" : "mahesh",
	  "password" : "password1",
	  "profession" : "teacher",
	  "id": 1
   },
   "user2" : {
      "name" : "suresh",
	  "password" : "password2",
	  "profession" : "librarian",
	  "id": 2
   },
   "user3" : {
      "name" : "ramesh",
	  "password" : "password3",
	  "profession" : "clerk",
	  "id": 3
   }
}

Sur la base des données ci-dessus, nous créons l'API RESTful suivante :

序号URIHTTP 方法发送内容结果
1listUsersGET显示所有用户列表
2addUserPOSTJSON 字符串添加新用户
3deleteUserDELETEJSON 字符串删除用户
4:idGET显示用户详细信息

Obtenir la liste des utilisateurs :

Avec le code suivant, nous avons créé une API RESTful listUsers, qui est utilisée pour lire la liste d'informations de l'utilisateur. Le code du fichier server.js est le suivant. suit :

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Exécutez ensuite la commande suivante :

$ node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Visitez http://127.0.0.1:8081/listUsers dans le navigateur, le résultat est le suivant :

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

Ajouter un utilisateur

Avec le code suivant, nous avons créé une API RESTful addUser, qui est utilisée pour ajouter de nouvelles données utilisateur. Le code du fichier server.js est le suivant :

var express = require('express');
var app = express();
var fs = require("fs");

//添加的新用户数据
var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

app.get('/addUser', function (req, res) {
   // 读取已存在的数据
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       data["user4"] = user["user4"];
       console.log( data );
       res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})
.

Exécutez ensuite la commande suivante :

$ node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Accédez à http://127.0.0.1:8081/addUser dans le navigateur, le résultat est le suivant :

{ user1:
   { name: 'mahesh',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user2:
   { name: 'suresh',
     password: 'password2',
     profession: 'librarian',
     id: 2 },
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3 },
  user4:
   { name: 'mohit',
     password: 'password4',
     profession: 'teacher',
     id: 4 } 
}

Affichez les détails de l'utilisateur

Le code suivant, nous créons L'API RESTful :id (user id) est utilisé pour lire les informations détaillées de l'utilisateur spécifié. Le code du fichier server.js est le suivant :

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
   // 首先我们读取已存在的用户
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       var user = data["user" + req.params.id] 
       console.log( user );
       res.end( JSON.stringify(user));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Ensuite, exécutez la commande suivante :

$ node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Accédez à http://127.0.0.1:8081/2 dans le navigateur, le résultat est le suivant :

{
   "name":"suresh",
   "password":"password2",
   "profession":"librarian",
   "id":2
}

Supprimer l'utilisateur

Avec le code suivant, nous créons une API RESTful deleteUser est utilisée pour supprimer les détails de l'utilisateur spécifié. Dans l'exemple suivant, l'identifiant de l'utilisateur est 2 et le fichier server.js. le code est le suivant :

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.get('/deleteUser', function (req, res) {

   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + 2];
       
       console.log( data );
       res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

Ensuite, exécutez la commande suivante :

$ node server.js 
应用实例,访问地址为 http://0.0.0.0:8081

Accédez à http://127.0.0.1:8081/deleteUser dans le navigateur, le résultat est le suivant :

{ user1:
   { name: 'mahesh',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3 } 
}