From a3d28fc08140e5be14041a2713b1e9e6107f0baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=A4=A9=E4=BC=9F?= <1571831274@qq.com> Date: Sun, 19 May 2024 21:10:49 +0800 Subject: [PATCH] =?UTF-8?q?20240515=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0240515-webapi\346\246\202\350\277\260.md" | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 "\351\273\204\345\244\251\344\274\237/20240515-webapi\346\246\202\350\277\260.md" diff --git "a/\351\273\204\345\244\251\344\274\237/20240515-webapi\346\246\202\350\277\260.md" "b/\351\273\204\345\244\251\344\274\237/20240515-webapi\346\246\202\350\277\260.md" new file mode 100644 index 0000000..f7d309f --- /dev/null +++ "b/\351\273\204\345\244\251\344\274\237/20240515-webapi\346\246\202\350\277\260.md" @@ -0,0 +1,41 @@ +### API与REST: + +#### 1. 什是API? +- API(Application Programming Interface)是一种软件接口,用于不同组件之间的通信和交互。它定义了如何通过编程语言访问和操作软件或服务的功能。 +- Web API是一种特定类型的API,通过Web服务提供对数据和功能的访问。它使用Web技术(如HTTP)来实现跨网络的通信。 + +#### 2. 什么是REST? +##### 2.1 REST的概念 +- REST(Representational State Transfer)是一种软件架构风格,旨在简化网络应用程序的通信。它基于统一接口的设计原则,将资源以统一的方式进行管理。 +- REST使用URL来标识资源,并使用标准的HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作。 + +##### 2.2 REST的约束 +- **客户端-服务器**:分离用户界面和数据存储,使得客户端和服务器可以独立演化。 +- **统一接口**:使用统一的接口对资源进行操作,包括资源的标识、资源的表述、自描述消息和超媒体作为应用程序状态引擎。 +- **分层系统**:通过分层系统实现客户端与服务器之间的松耦合,提高系统的可伸缩性。 +- **缓存**:服务器必须提供缓存控制信息,以减少网络流量和提高性能。 +- **无状态**:每个请求都包含所有必要的信息,服务器不保存客户端的状态,使系统更易于扩展。 +- **按需编码**:服务器可以通过传输代码到客户端来扩展客户端的功能,但应该是可选的。 + +##### 2.3 REST的误区 +- RESTful API并非只有遵循REST约束的API才能称为RESTful。 +- RPC(Remote Procedure Call)是另一种常见的API风格,与REST有所不同。 + +#### 3. HTTP协议 +- HTTP(Hypertext Transfer Protocol)是用于传输超文本的应用层协议,常用于Web应用程序之间的通信。 +- HTTP消息包括请求消息和响应消息,每个消息都包含起始行、消息头、空行和消息正文。 +- HTTP方法包括GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS等,用于指定对资源的操作。 +- HTTP响应包含状态码,表示请求的执行状态,如1xx(信息)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。 + +#### 4. 设计资源的URL注意原则 +- 使用名词的复数形式表示资源集合,如`/books`。 +- 使用斜线表示资源之间的层次关系,如`/books/1`。 +- 避免在URL中包含增删改查操作名称。 +- 可在URL中包含动词表示操作,如`PUT /books/12/set-admin`。 +- 查询字符串可用于筛选、搜索或分页查询,如`GET /books?Id=12&pageNumber=2`。 +- URL使用小写字母和中划线,避免使用下划线。 +- URL末尾不应包含斜线。 + +#### 5. API版本控制 +- 当API发生变化时,应使用不同版本来区分。 +- 可通过URL路径、查询字符串、自定义消息头或Accept消息头指定API版本。 \ No newline at end of file -- Gitee