RESTful API
RESTful API 是一种网络应用程序的设计风格和开发方式。
使用 RESTful 风格设计的 API 路由基于 HTTP,支持 XML 与 JSON 等格式的数据回传。
这种风格设计的接口本身是通过请求方式的限制实现对网络数据资源状态的标识,类似于 GET 请求某个路由路径,应当对应的是数据的获取,而使用 POST 方式进行路由路径的请求,应当是对应数据的增加。
1 2 3 |
app.get('/',(req,res)=>{ res.send('HelloWorld'); }) |
概述
RESTful 是目前最流行的 API 设计规范,其核心思想是对客户端发起的请求进行 5 种划分,不同的操作对应 5 种不同的 HTTP 请求方法,这是以逻辑操作功能为基础进行划分的,而不是传统的 API 设计以路径方式进行划分
[ 请求方式 - 对应操作 ] 符合 RESTful 的 API 设计就是所有的 API 路由符合以下划分:
- GET — 读取数据内容(Read)
- POST — 新建或插入数据内容(Create)
- PUT — 更新数据内容(Update)
- PATCH — 局部数据更新(Update)
- DELETE — 删除操作(Delete)
也就是说,相同的请求路径,由于请求方式的不同,获取的数据结果也可能不同或执行不同的数据操作。
[ 状态码 ] 任何请求都会返回数字,这些返回的数字被称为状态码,用于表示此次请求是成功还是出现了什么问题。
不同的请求方式返回的状态码可能不同,常见的状态码如下:
创建 RESTful
首先,创建一个 json 数据资源文件 users.json(假数据),内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "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 方法 | 发送内容 | 结果 |
---|---|---|---|---|
1 | listUsers | GET | 空 | 显示所有用户列表 |
2 | addUser | POST | JSON 字符串 | 添加新用户 |
3 | deleteUser | DELETE | JSON 字符串 | 删除用户 |
4 | :id | GET | 空 | 显示用户详细信息 |
[1] 获取用户列表:以下是 RESTful API listUsers,用于读取用户的信息列表
[2] 添加用户:以下是创建 RESTful API addUser,用于添加新的用户数据
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 |
// app.js const express = require('express'); const app = express(); var fs = require('fs'); // 用于添加的新用户数据 var user = { "user4": { "name": "mohit", "password": "password4", "profession": "teacher", "id": 4 } } app.get('/addUser', function(req, res) { // 从文件中读取假数据 fs.readFile(__dirname + '/data/users.json', 'utf8', function(err, data) { data = JSON.parse(data); data.user4 = user.user4; console.log(data); res.end(JSON.stringify(data)); }) }); app.listen(3000, function() { console.log('服务启动中 ...'); }); |
[3] 显示用户详情:创建了 RESTful API :id(用户id), 用于读取指定用户的详细信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// app.js const express = require('express'); const app = express(); var fs = require('fs'); app.get('/:id', function(req, res) { // 从文件中读取假数据 fs.readFile(__dirname + '/data/users.json', 'utf8', function(err, data) { data = JSON.parse(data); console.log(data); var user = data['user' + req.params.id]; console.log(user); res.end(JSON.stringify(user)); }) }); app.listen(3000, function() { console.log('服务启动中 ...'); }); |
[4] 删除用户:创建 RESTful API deleteUser, 用于删除指定用户的详细信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// app.js const express = require('express'); const app = express(); var fs = require('fs'); // 要删除的用户id var id = 2; app.get('/deleteUser', function(req, res) { // 从文件中读取假数据 fs.readFile(__dirname + '/data/users.json', 'utf8', function(err, data) { data = JSON.parse(data); delete data['user' + id]; console.log(data); res.end(JSON.stringify(data)); }) }); app.listen(3000, function() { console.log('服务启动中 ...'); }); |