Учебники

Node.js — RESTful API

REST означает REpresentational State Transfer. REST — это архитектура, основанная на веб-стандартах и ​​использующая протокол HTTP. Он вращается вокруг ресурса, где каждый компонент является ресурсом, а доступ к ресурсу осуществляется через общий интерфейс с использованием стандартных методов HTTP. REST был впервые представлен Роем Филдингом в 2000 году.

Сервер REST просто предоставляет доступ к ресурсам и клиенту REST, а также изменяет ресурсы с использованием протокола HTTP. Здесь каждый ресурс идентифицируется URI / глобальными идентификаторами. REST использует различные представления для представления таких ресурсов, как текст, JSON, XML, но JSON является наиболее популярным.

Методы HTTP

Следующие четыре HTTP-метода обычно используются в архитектуре на основе REST.

  • GET — используется для доступа к ресурсу только для чтения.

  • PUT — используется для создания нового ресурса.

  • DELETE — используется для удаления ресурса.

  • POST — используется для обновления существующего ресурса или создания нового ресурса.

GET — используется для доступа к ресурсу только для чтения.

PUT — используется для создания нового ресурса.

DELETE — используется для удаления ресурса.

POST — используется для обновления существующего ресурса или создания нового ресурса.

Веб-сервисы RESTful

Веб-сервис — это набор открытых протоколов и стандартов, используемых для обмена данными между приложениями или системами. Программные приложения, написанные на разных языках программирования и работающие на разных платформах, могут использовать веб-сервисы для обмена данными по компьютерным сетям, таким как Интернет, аналогично межпроцессному взаимодействию на одном компьютере. Эта совместимость (например, связь между Java и Python или приложениями Windows и Linux) обусловлена ​​использованием открытых стандартов.

Веб-сервисы на основе архитектуры REST известны как веб-сервисы RESTful. Эти веб-сервисы используют методы HTTP для реализации концепции архитектуры REST. Веб-сервис RESTful обычно определяет URI, унифицированный идентификатор ресурса, сервис, который обеспечивает представление ресурса, такого как JSON и набор HTTP-методов.

Создание RESTful для библиотеки

Предположим, у нас есть JSON-база данных пользователей, имеющих следующих пользователей в файле users.json :

{
   "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
   }
}

На основании этой информации мы собираемся предоставить следующие API-интерфейсы RESTful.

Sr.No. URI HTTP метод Тело POST Результат
1 ListUsers ПОЛУЧИТЬ пустой Показать список всех пользователей.
2 Добавить пользователя СООБЩЕНИЕ JSON String Добавить данные нового пользователя.
3 deleteUser УДАЛЯТЬ JSON String Удалить существующего пользователя.
4 :Я бы ПОЛУЧИТЬ пустой Показать детали пользователя.

Я сохраняю большую часть всех примеров в форме жесткого кодирования, предполагая, что вы уже знаете, как передавать значения из внешнего интерфейса, используя Ajax или данные простой формы, и как обрабатывать их, используя объект экспресс- запроса .

Список пользователей

Давайте реализуем наши первые RESTful API listUsers, используя следующий код в файле server.js:

server.js

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("Example app listening at http://%s:%s", host, port)
})

Теперь попробуйте получить доступ к определенному API, используя URL: http://127.0.0.1:8081/listUsers и метод HTTP: GET на локальном компьютере с использованием любого клиента REST. Это должно привести к следующему результату —

Вы можете изменить данный IP-адрес, когда поместите решение в производственную среду.

{
   "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
   }
}

Добавить пользователя

Следующий API покажет вам, как добавить нового пользователя в список. Ниже приводится информация о новом пользователе —

user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

Вы можете принять тот же самый ввод в форме JSON, используя вызов Ajax, но с точки зрения обучения, мы делаем его жестко запрограммированным здесь. Ниже приведен API-интерфейс addUser для нового пользователя в базе данных:

server.js

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

var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

app.post('/addUser', function (req, res) {
   // First read existing users.
   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("Example app listening at http://%s:%s", host, port)
})

Теперь попробуйте получить доступ к определенному API, используя URL: http://127.0.0.1:8081/addUser и метод HTTP: POST на локальном компьютере с использованием любого клиента REST. Это должно привести к следующему результату —

{
   "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}
}

Показать детали

Теперь мы реализуем API, который будет вызываться с использованием идентификатора пользователя, и он будет отображать детали соответствующего пользователя.

server.js

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

app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["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("Example app listening at http://%s:%s", host, port)
})

Теперь попробуйте получить доступ к определенному API, используя URL: http://127.0.0.1:8081/2 и метод HTTP: GET на локальном компьютере, используя любой клиент REST. Это должно привести к следующему результату —

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

Удалить пользователя

Этот API очень похож на API addUser, где мы получаем входные данные через req.body, а затем на основе идентификатора пользователя удаляем этого пользователя из базы данных. Для простоты нашей программы мы предполагаем, что собираемся удалить пользователя с ID 2.

server.js

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

var id = 2;

app.delete('/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("Example app listening at http://%s:%s", host, port)
})

Теперь попробуйте получить доступ к определенному API с помощью URL: http://127.0.0.1:8081/deleteUser и HTTP Method: DELETE на локальном компьютере с использованием любого клиента REST. Это должно привести к следующему результату —