0%

使用 Express 创建增删改查 API 示例接口

摘要:使用nodejsExpress包,创建增删改查 API 接口 demo

开发环境准备

新建项目文件夹,并在终端打开:

1
2
mkdir express-api
cd express-api

初始化 nodejs 工程,并查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
node init -y

//终端反馈:
Wrote to /Users/zhangminglei/Documents/git/express-api/package.json:
{
"name": "express-api",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

安装 express 包文件:

1
2
3
4
5
6
7
8
9
npm install express

//终端反馈:
added 50 packages, and audited 51 packages in 3s

2 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities

查看安装后文件目录:

1
2
3
4
ls

//终端反馈:
node_modules package-lock.json package.json

通过命令行在当前目录打开 VSCode

1
code .

初始运行服务

1、在文件根目录 创建一个入口文件 app.js 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 1、引入包文件
const express = require("express");

//2、创建一个应用实例
const app = express();

//3、设定服务端口
const port = 3000;

//4、调用服务并打印日志
app.listen(port, "127.0.0.1", () => {
console.log(`服务在本地${port}端口启动: http://127.0.0.1:${port}`);
});

2、使用 node 运行 app.js ,在 VSCode 终端当中输入:

1
2
3
4
node app.js

//反馈:
服务在本地3000端口启动: http://127.0.0.1:3000

3、浏览器访问:http://127.0.0.1:3000 显示以下内容

1
Cannot GET /

原因:此时只是启动了一个服务,但是没有定义各种get 请求的处理方法,后面将创建各种请求方法处理函数。

定义一个 GET 请求

1、修改 app.js文件,在//2、创建一个应用实例 增加内容如下:

1
2
3
4
5
//2.1 创建一个Get请求处理函数
app.get("/", (req, res) => {
res.send("hello,legalgeek");
console.log("有人通过Get请求访问了接口");
});

2、重启 app.js 服务,浏览器刷新访问

1
2
3
4
5
node app.js

//系统反馈:
服务在本地3000端口启动: http://127.0.0.1:3000
有人通过Get请求访问了接口

优化:修改后自动重启

痛点:目前修改的代码,需要手动重启服务才能运行,考虑使用 nodemon 实现保存后自动重启服务。

(1)安装 nodemon

1
2
3
4
5
6
7
npm install nodemon

//系统反馈:
added 117 packages, and audited 168 packages in 38s
18 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities

(2)修改文件根目录下的 package.json 当中"scripts"部分,内容如下:

1
2
3
"scripts": {
"dev": "nodemon app.js"
},

(3)在 vs code 终端当中运行:npm run dev

1
2
3
4
5
6
7
8
9
10
11
12
 ✗ npm run dev

//系统反馈:
> express-api@1.0.0 dev
> nodemon app.js

[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
服务在本地3000端口启动: http://127.0.0.1:3000

(4)尝试修改 app.js 后保存,实现项目的自动重启

定义一个 POST 请求

浏览器访问的请求为 Get 请求,可以使用 Postman 等工具,构造 post 请求查询文档,post 一般使用 json 进行文件的传输,因此需要 express 具备 json 格式文件的处理能力。

(1)使用 express.json() 中间件,以处理 json 请求

(2)在 get 请求代码之下,定义一个 post 请求:

1
2
3
4
5
6
//2.2 创建一个post请求处理函数
app.use(express.json());
app.post("", (req, res) => {
console.log("收到请求: ", req.body);
res.status(200).send();
});

(3) 使用 postman 发送 POST 请求:访问 http://127.0.0.1:3000 构造 Body – raw – JSON 请求参数

1
2
3
{
"hello": "hello minglei!"
}

(4) 发送请求后,在 vs code 终端自动展示请求日志:

1
收到请求:  { hello: 'hello minglei!' }

(5) 如果没有安装 postman,可以使用终端访问接口:

1
2
3
4
5
curl --location --request POST 'http://127.0.0.1:3000' \
--header 'Content-Type: application/json' \
--data-raw '{
"hello":"hello minglei!"
}'

定义一个 PUT 请求

Put 请求用于更新一个指定的文档,需要设定文档唯一标识 ID 传递给服务器,在 post 请求之下,定义一个 Put 请求处理函数:

1
2
3
4
5
6
//2.3 创建一个PUT请求
app.put("/:id",(req,res)=>{
console.log("收到参数: ", req.params.id)
console.log("收到请求体: ",req.body)
res.status(200).send()
})

与 post 请求相比,主要变化点:支持接受参数:id ,并支持使用 req.params.id 获取 ID.

同样使用 postman 进行接口的测试:

例如 PUT 访问:http://127.0.0.1:3000/123

在 vs code 终端将显示内容:

1
2
收到参数:  123
收到请求体: { hello: 'hello minglei!' }

定义一个 DELETE 请求

与 PUT 请求类似,DELETE 请求也需要接收 ID 参数,具体定义如下:

1
2
3
4
5
//2.4 创建一个DELETE请求
app.delete("/:id",(req,res)=>{
console.log("收到参数:",req.params.id)
res.status(204).send()
})

同样使用 postman 进行接口的测试:

例如 DELETE 访问:http://127.0.0.1:3000/123

在 vs code 终端将显示内容:

1
收到参数: 123

最终完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// app.js

// 1、引入包文件
const express = require("express");

//2、创建一个应用实例
const app = express();
app.use(express.json());

//2.1 创建一个Get请求处理函数
app.get("/", (req, res) => {
res.send("hello,legalgeek!");
console.log("通过Get请求访问了接口");
});

//2.2 创建一个post 请求处理函数
app.use(express.json());
app.post("", (req, res) => {
console.log("收到请求: ", req.body); //打印请求体
res.status(200).send();
});

//2.3 创建一个PUT请求
app.put("/:id", (req, res) => {
console.log("收到参数: ", req.params.id); //打印请求参数id
console.log("收到请求体: ", req.body); //打印请求体
res.status(200).send();
});

//2.4 创建一个DELETE请求
app.delete("/:id", (req, res) => {
console.log("收到参数:", req.params.id);
res.status(204).send();
});

//3、设定服务端口
const port = 3000;

//4、调用服务并打印日志
app.listen(port, "127.0.0.1", () => {
console.log(`服务在本地${port}端口启动: http://127.0.0.1:${port}`);
});