认识Restful Api
Rest
- Rest即表述性状态传递,Representational State Transfer的简称;
- Rest是一种软件架构风格;
- Rest是一组架构约束条件和原则;
- REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准
- REST 通常使用 JSON 数据格式。
REST是设计风格而不是标准
Restful
- 满足这些约束条件和原则的应用程序或设计就是RESTful;
总结REST有两个最重要的原则:
1.分离性;交互的客户端和服务器除了RESTful-API没有其他的依赖关系,限制了整个系统的复杂性,促进了各个部分的独立性。
2.无状态性:客户端和服务器之间的交互在请求之间是无状态的,从客户端到服务器的每个请求都必须包含理解请求所必需的信息。基于 REST 架构的 Web Services 即是 RESTful。
Restful Api
满足上面规范的API接口就是RESTful-API。客户端常常通过HTTP方法(GET、POST、PUT、DELETE等),来发送API请求;服务端常常以JSON数据作为响应。
REST 基本架构的四个HTTP方法:
-
GET - 用于获取数据。
-
PUT - 用于更新或添加数据。
-
DELETE - 用于删除数据。
-
POST - 用于添加数据
高效率的RESTful请求都倾向于使用HTTP GET方法。GET请求的所有信息都携带在请求地址url中。在Node.js里读取request.url可以获得请求的url,我们需要对不同的url做路由处理,返回不同的响应数据
Example
- 创建Restful
首先,创建一个 json 数据资源文件 users.json,内容如下:
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
}
- 创建 RESTful API ,用于读取用户的信息列表,添加新的用户数据,读取指定用户的详细信息,删除用户数据, 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 user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
//添加新用户
app.get('/User++', 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));
});
})
//删除用户
app.get('/User--', 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));
});
})
//显示用户详情
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().por;
console.log("应用实例,访问地址为 http://%s:%s", host, port);
}).
注意
‘/:id’页面回调函数的定义放在最后,否则会影响其他页面,因为其他页面通配‘/:id’。
运行方式:node rest.js
在浏览器中访问 http://127.0.0.1:8081/listUsers ——获取用户列表
在浏览器中访问 http://127.0.0.1:8081/addUser ——添加user4
在浏览器中访问 http://127.0.0.1:8081/deleteUser ——删除user2
在浏览器中访问 http://127.0.0.1:8081/2 ——显示user2