无涯教程-Node.js - RESTFul API

73 阅读4分钟

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) { //首先读取现有用户。 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) { //首先读取现有用户。 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) { fs.readFile( __dirname + "/" + "users.json", utf8, function (err, data) { data=JSON.parse( data ); delete data["user" + 2];

  console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln"> data </span><span class="pun">);</span><span class="pln">
  res</span><span class="pun">.</span><span class="kwd">end</span><span class="pun">(</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">data</span><span class="pun">));</span><span class="pln">

}); })

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}}

参考链接

www.learnfk.com/nodejs/node…