首页 > 编程语言 >无涯教程-Node.js - RESTFul API

无涯教程-Node.js - RESTFul API

时间:2024-01-21 16:31:37浏览次数:20  
标签:Node name app 无涯 js var password data id

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.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/nodejs/nodejs-restful-api.html

标签:Node,name,app,无涯,js,var,password,data,id
From: https://blog.51cto.com/u_14033984/9355537

相关文章

  • 前端js方法的书写顺序,比如有内部方法,外部方法,用户触发的动作方法,监听事件方法,等等,
    在前端JS开发中,通常的方法书写顺序如下:变量声明和初始化内部方法定义外部方法定义初始化函数事件监听方法定义用户触发的动作方法定义这个顺序的主要目的是提高代码的可读性和可维护性。按照这个顺序,可以使代码更加清晰、易于理解和修改。变量声明和初始化应该在前面,因为......
  • 50csv表格转换为json文件
     importcsvimportjson#常规csv表格转换为json文件,表头作为字典key字段。defconvert_csv_to_json(csv_file_path,json_file_path):data=[]withopen(csv_file_path,'r',encoding='utf-8-sig')ascsv_file:csv_reader=csv.DictReader(cs......
  • 无涯教程-Node.js - 全局对象
    Node.js全局对象本质上是全局的,并且在所有模块中都可用,无涯教程不需要在应用程序中包含这些对象,而是可以直接使用它们。__filename__filename表示正在执行的代码的文件名,这是此代码文件的解析绝对路径,对于主程序,此文件名不必与命令行中使用的文件名相同,模块内部的值是该模......
  • 无涯教程-Node.js - Web模块
    Web服务器是一个软件应用程序,它处理HTTP客户端(例如Web浏览器)发送的HTTP请求,并返回网页以响应客户端,Web服务器通常提供html文档以及图像,样式表和脚本。Web应用架构Web应用程序通常分为四层-Client         -该层由Web浏览器,移动浏览器或可以向Web服务器......
  • Java将json字符串转换为数组的方法
    Java将json字符串转换为数组的方法在Java开发中,经常会遇到将json字符串转换为数组的需求。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而Java中的JSONArray类可以用来处理json数组。下面将介绍一种常用的方法,用于将json字符串转换为......
  • 无涯教程-Node.js - 事件发送
    Node中的许多对象都会发出事件,例如net.Server每次对等点连接到它时都会发出一个事件,而fs.readStream在文件打开时会发出一个事件。发出事件的所有对象都是events.EventEmitter的实例。EventEmitter类如上一节所述,EventEmitter类位于事件模块中。可通过以下代码访问-//导入事件......
  • js设计模式之观察者模式
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>观察者模式</title></head><body><script>classEvent{constructor(){}//事件容器,可以是一个也可以是......
  • 无涯教程-Node.js - IO系统
    Node使用围绕标准POSIX函数的简单包装器来实现文件I/O,可以使用以下语法导入节点文件系统(fs)模块-varfs=require("fs")同步与异步fs模块中的每个方法都有同步形式和异步方式,异步方法将最后一个参数作为完成函数回调,并将回调函数的第一个参数作为错误。最好使用异步方法而不是......
  • 无涯教程-Node.js - Buffers
    纯JavaScript是Unicode友好的,但是对于二进制数据却不是,在处理TCP流或文件系统时,必须处理八位位组流,Node提供了Buffer类,该类提供了实例来存储类似于整数数组的原始数据,但对应于V8堆外部的原始内存分配。缓冲区类是全局类,可以在应用程序中访问而无需导入缓冲区模块。创建缓冲区......
  • 无涯教程-Node.js - Streams
    Stream流是使您可以连续地从源读取数据或将数据写入目标的对象,在Node.js中,有四种类型的流-Readable  - 用于读取操作的流。Writable   - 用于写操作的流。Duplex    - 可用于读取和写入操作的流。Transform -一种双工流,其中基于输入来计算输出......