Node.js RESTful API
Что такое REST?
REST (Representational State Transfer) — это архитектурный стиль программного обеспечения, предложенный доктором Роем Филдингом в его докторской диссертации в 2000 году.
Representational State Transfer — это набор архитектурных ограничений и принципов. Приложения или проекты, удовлетворяющие этим ограничениям и принципам, являются RESTful. Обратите внимание, что REST — это стиль проектирования, а не стандарт. REST обычно основан на использовании существующих, широко распространённых протоколов и стандартов, таких как HTTP, URI, XML (подмножество Standard Generalized Markup Language) и HTML (приложение Standard Generalized Markup Language). REST обычно использует формат данных JSON.
Методы HTTP
Ниже приведены четыре метода базовой архитектуры REST:GET- Используется для получения данных.
PUT- Используется для обновления или добавления данных.
DELETE- Используется для удаления данных.
POST- Используется для добавления данных.
RESTful веб-сервисы
Веб-сервис — это независимое от платформы, слабо связанное, самодостаточное, программируемое веб-приложение. Он использует открытый стандарт XML (подмножество Standard Generalized Markup Language) для описания, публикации, обнаружения, координации и настройки этих приложений, а также применяется для разработки распределённых, взаимодействующих приложений.
Веб-сервисы, основанные на архитектуре REST, являются RESTful.
Благодаря своей легковесности и возможности передачи данных напрямую по HTTP, RESTful-подход к веб-сервисам стал наиболее распространённой альтернативой. Клиенты могут быть реализованы на различных языках (таких как программы на Java, Perl, Ruby, Python, PHP и Javascript [включая Ajax]).
Доступ к RESTful веб-сервисам обычно осуществляется автоматизированными клиентами или приложениями, действующими от имени пользователей. Однако простота таких сервисов позволяет пользователям взаимодействовать с ними напрямую, создавая GET URL в веб-браузере и читая возвращаемое содержимое.
Для получения дополнительной информации см.:Подробное объяснение архитектуры RESTful
Создание 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:
| Порядковый номер | URI | HTTP-метод | Содержимое запроса | Результат |
|---|---|---|---|---|
| 1 | listUsers | GET | Пусто | Отобразить список всех пользователей |
| 2 | addUser | POST | Строка JSON | Добавить нового пользователя |
| 3 | deleteUser | DELETE | Строка JSON | Удалить пользователя |
| 4 | :id | GET | Пусто | Показать подробную информацию о пользователе |
Получить список пользователей:
В следующем коде мы создаём RESTful APIlistUsers, используемый для чтения списка информации о пользователях. Код файла 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("应用实例,访问地址为 http://%s:%s", host, port)
})
Затем выполните следующую команду:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Откройте http://127.0.0.1:8081/listUsers в браузере, и результат будет следующим:
{
"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 APIaddUser, используемый для добавления данных нового пользователя. Код файла 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.get('/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("应用实例,访问地址为 http://%s:%s", host, port)
})
Затем выполните следующую команду:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Перейдите по адресу http://127.0.0.1:8081/addUser в браузере, и результат будет следующим:
{ 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 }
}
Показать сведения о пользователе
В следующем коде мы создаём RESTful API:id (идентификатор пользователя), используемый для чтения подробной информации об указанном пользователе. Код файла 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) {
data = JSON.parse( data );
var user = data["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("应用实例,访问地址为 http://%s:%s", host, port)
})
Затем выполните следующую команду:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Перейдите по адресу http://127.0.0.1:8081/2 в браузере, и результат будет следующим:
{
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}
Удалить пользователя
В следующем коде мы создаём RESTful APIdeleteUser, используемый для удаления подробной информации об указанном пользователе. В следующем примере идентификатор пользователя равен 2. Код файла server.js выглядит следующим образом:
var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.get('/deleteUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + id];
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("应用实例,访问地址为 http://%s:%s", host, port)
})
Затем выполните следующую команду:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Перейдите по адресу http://127.0.0.1:8081/deleteUser в браузере, и результат будет следующим:
{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 }
}
Другие расширения