Node.js — REST API

22

Від автора: що таке архітектура 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}}