Node.js — REST API

380

Від автора: що таке архітектура REST? REST означає REpresentational State Transfer. REST — це веб-стандарт, заснований на архітектурі, яка використовує протокол HTTP. Вона пов’язана з обробкою ресурсів, де кожен компонент є ресурсом, і доступ до ресурсів здійснюється через загальний інтерфейс з використанням стандартних методів HTTP. REST був вперше представлений Роєм Філдінга в 2000 році.

Сервер REST просто забезпечує доступ до ресурсів, а клієнти REST отримують доступ до ресурсів і змінюють їх за допомогою протоколу HTTP. Тут кожен ресурс ідентифікується з допомогою URI/глобальних ідентифікаторів. В Node js REST використовує різні вистави для відображення ресурсів, таких як текст, JSON, XML, але найуживанішим серед них, є JSON.

HTTP методи

В архітектурі REST зазвичай використовуються наступні чотири HTTP методу.

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

PUT — використовується для створення нового ресурсу.

DELETE використовується для видалення ресурсу.

POST — використовується для оновлення наявного ресурсу або створення нового ресурсу.

Веб-служби RESTful

Веб-служба являє собою набір відкритих протоколів і стандартів, що використовуються для обміну даними між додатками або системами. Програмні додатки, написані на різних мовах програмування і працюють на різних платформах, можуть використовувати веб-служби для обміну даними через комп’ютерні мережі, такі як Інтернет, аналогічним способом, тому як здійснюється взаємодія між різними процесами на окремому комп’ютері. Ця сумісність (наприклад, зв’язок між Java і Python, або додатками Windows і Linux) здійснюється завдяки використанню відкритих стандартів.

Веб-служби, засновані на архітектурі REST, називаються веб-службами RESTful. Ці веб-служби використовують HTTP методи для реалізації концепції архітектури REST. Веб-служба RESTful зазвичай визначає URI, Uniform Resource Identifier — службу, яка надає уявлення ресурсів, таке як 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
}
}

Грунтуючись на цій інформації, ми надамо наступні RESTful API.

Node.js — REST API

У всіх наведених прикладах здебільшого було використано жорстке кодування, припускаючи, що ви вже знайомі з тим, як передавати значення front end з допомогою даних Ajax або простої форми і обробляти їх за допомогою об’єкта express Request.

Список користувачів

Давайте реалізуємо наше перше RESTful API listUsers, використовуючи наступний код у файлі 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) {
// Спочатку зчитуємо існуючих користувачів.
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) {
// Спочатку зчитуємо існуючих користувачів.
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) {
// Спочатку зчитуємо існуючих користувачів.
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 метод: DELETE на локальному комп’ютері з використанням будь-якого клієнта REST. . В результаті ви повинні отримати наступне:

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