Від автора: що таке архітектура 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.
У всіх наведених прикладах здебільшого було використано жорстке кодування, припускаючи, що ви вже знайомі з тим, як передавати значення 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}}