无涯教程:Node.js - Express RESTFul API
无涯教程网: REST是基于Web标准的体系结构,并使用HTTP协议,它围绕资源展开,其中每个组件都是资源,并且使用HTTP标准方法通过公共接口访问资源。 REST由Roy Fielding于2000年首次提出。
HTTP方法
在基于REST的体系结构中,通常使用以下四种HTTP方法。
-
GET - 用于提供对资源的只读访问。
-
PUT - 用于创建新资源。
-
DELETE - 用于删除资源。
-
POST - 用于更新现有资源或创建新资源。
创建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方法 | POST正文 | 输出 |
---|---|---|---|---|
1 | listUsers | GET | 空 | 显示所有用户的列表。 |
2 | addUser | POST | JSON字符串 | 添加新用户的详细信息。 |
3 | deleteUser | DELETE | JSON字符串 | 删除现有用户。 |
4 | :id | GET | 空 | 显示用户的详细信息。 |
listUsers路由
让我们在server.js文件中使用以下代码实现我们的第一个RESTful API listUsers -
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)
})
现在,尝试使用任何REST客户端在本地计算机上使用 URL:http://127.0.0.1:8081/listUsers 和 HTTP方法:GET 访问已定义的API。
{
"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
}
}
addUser路由
以下API将向您展示如何在列表中添加新用户,以下是新用户的详细信息-
user={
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}}
您可以使用Ajax调用以JSON形式接受相同的输入,但是出于教学的观点,我们在这里对其进行了硬编码。以下是对数据库中新用户的 addUser API-
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)
})
现在,尝试使用任何REST客户端在本地计算机上使用 URL:http://127.0.0.1:8081/addUser 和 HTTP方法:POST 访问已定义的API。这应该产生以下输出-
{
"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}
}
Show Detail路由
现在,我们将实现一个API,该API将使用用户ID进行调用,并显示相应用户的详细信息。
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)
})
现在,尝试使用任何REST客户端在本地计算机上使用 URL:http://127.0.0.1:8081/2 和 HTTP方法:GET 访问已定义的API。这应该产生以下输出-
{"name":"suresh","password":"password2","profession":"librarian","id":2}
Delete User路由
该API与addUser API非常相似,在addUser API中,我们通过req.body接收输入数据,然后根据用户ID从数据库中删除该用户。为了简化程序,我们假设要删除ID为2的用户。
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)
})
现在,尝试使用任何REST客户端在本地计算机上使用 URL:http://127.0.0.1:8081/deleteUser 和 HTTP方法:DELETE 访问已定义的API。
{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}
https://www.learnfk.com/article-nodejs/nodejs_restful_api