Node.js - RESTFul API

Node.js - RESTFul API 首页 / Node.js入门教程 / Node.js - 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 listUsersGET显示所有用户的列表。
2 addUser POST JSON字符串添加新用户的详细信息。
3 deleteUserDELETE JSON字符串删除现有用户。
4:idGET显示用户的详细信息。

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的用户。

链接:https://www.learnfk.comhttps://www.learnfk.com/nodejs/nodejs-restful-api.html

来源:LearnFk无涯教程网

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

iOS开发高手课 -〔戴铭〕

RPC实战与核心原理 -〔何小锋〕

编译原理实战课 -〔宫文学〕

爱上跑步 -〔钱亮〕

讲好故事 -〔涵柏〕

深入C语言和程序运行原理 -〔于航〕

去无方向的信 -〔小麥〕

说透低代码 -〔陈旭〕

好记忆不如烂笔头。留下您的足迹吧 :)