【架构】微前端知识体系

【公司内部分享】微前端知识体系

相关文章

微前端知识体系


一、什么是RESTFUL

RESTful 是一种针对网络应用程序设计的软件架构风格,它是 Representational State Transfer(表述性状态转移)的缩写。RESTful 架构风格的设计旨在提高系统的可伸缩性、可靠性、性能和可维护性。

RESTful API 是基于这种架构风格设计的应用程序编程接口

二、RESTful 架构的一些关键特征

  • 客户端-服务器模型: RESTful 架构采用了客户端-服务器的分离模型。客户端和服务器之间通过 HTTP 协议通信,客户端发送请求,服务器返回响应。

  • 无状态性: RESTful 架构中的通信是无状态的,即每个请求都包含足够的信息让服务器理解请求。服务器不会保留客户端请求的任何状态,而是根据每个请求的内容进行处理。

  • 资源: RESTful 架构中的核心概念是资源,每个资源都有一个唯一的标识符(通常是 URL)。客户端通过 URL 来访问和操作资源,而不是直接操作服务器端的功能。

  • 表述性状态转移 (REST): RESTful 架构中的操作基于资源的状态转移。客户端通过对资源的操作来改变资源的状态,这些操作包括 GET(获取资源)、POST(创建资源)、PUT(更新资源)和 DELETE(删除资源)等。

  • 统一接口: RESTful 架构中使用统一的接口来访问和操作资源。这意味着不同的客户端可以通过相同的方式与服务器交互,而无需了解服务器的内部实现细节。

三、使用示例

这个示例创建了一个简单的 Express 应用程序,其中包含对用户资源的 CRUD 操作。

客户端

服务端

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const PORT = process.env.PORT || 3000;

// 使用 body-parser 中间件来解析请求体
app.use(bodyParser.json());

// 示例数据,模拟数据库中的用户信息
let users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];

// 获取所有用户
app.get('/api/users', (req, res) => {
res.json(users);
});

// 获取特定用户
app.get('/api/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const user = users.find(user => user.id === id);
if (user) {
res.json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
});

// 创建新用户
app.post('/api/users', (req, res) => {
const newUser = req.body;
users.push(newUser);
res.status(201).json(newUser);
});

// 更新用户
app.put('/api/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const updateUser = req.body;
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
users[index] = { ...users[index], ...updateUser };
res.json(users[index]);
} else {
res.status(404).json({ message: 'User not found' });
}
});

// 更新用户,用于局部更新用户信息
app.patch('/api/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const updateUser = req.body;
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
// 对用户进行局部更新
users[index] = { ...users[index], ...updateUser };
res.json(users[index]);
} else {
res.status(404).json({ message: 'User not found' });
}
});

// 删除用户
app.delete('/api/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
users.splice(index, 1);
res.json({ message: 'User deleted successfully' });
} else {
res.status(404).json({ message: 'User not found' });
}
});

// 启动服务器
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});

四、PUT与PATCH的区别

PUT 方法:

  • PUT 方法用于更新整个资源。当客户端使用 PUT 请求时,它要求服务器将客户端提供的完整资源替换服务器上已有的资源。换句话说,PUT 请求用于更新整个资源的内容。

  • 如果客户端发送的 PUT 请求中包含了所有必要的资源属性,那么服务器应该将该请求中提供的资源完整地替换原有的资源,并且应该将原有资源的所有属性都设置为新资源中的对应属性。如果服务器上不存在与客户端提供的资源标识符相对应的资源,则应该创建一个新的资源。

PATCH 方法:

  • PATCH 方法用于局部更新资源。与 PUT 不同,PATCH 请求不要求客户端提供完整的资源,而是允许客户端提供要修改的资源的部分属性。服务器应该根据客户端提供的部分资源属性来对服务器上的资源进行部分更新,而不是完全替换整个资源。

  • PATCH 请求允许客户端按需更新资源的特定部分,而无需发送整个资源的副本。这对于更新大型资源或仅需更新部分属性的情况非常有用。


喜欢这篇文章?打赏一下支持一下作者吧!
【架构】微前端知识体系
https://www.cccccl.com/20221002/架构/浅析RESTFUL架构/
作者
Jeffrey
发布于
2022年10月2日
许可协议