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. Это должно привести к следующему результату —