From 37fa87e0f4c396e788fdd9bd044de30c360b12c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E6=A2=A6=E5=A9=B7?= <3410849650@qq.com> Date: Fri, 17 May 2024 23:59:04 +0800 Subject: [PATCH] REST --- .../20240517-REST\347\256\200\344\273\213.md" | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 "\344\275\231\346\242\246\345\251\267/20240517-REST\347\256\200\344\273\213.md" diff --git "a/\344\275\231\346\242\246\345\251\267/20240517-REST\347\256\200\344\273\213.md" "b/\344\275\231\346\242\246\345\251\267/20240517-REST\347\256\200\344\273\213.md" new file mode 100644 index 0000000..cf9a67c --- /dev/null +++ "b/\344\275\231\346\242\246\345\251\267/20240517-REST\347\256\200\344\273\213.md" @@ -0,0 +1,33 @@ +### API与REST + +API(Application Programming Interface,应用程序编程接口)是一组定义了软件组件如何相互交互的规范。它允许不同的软件系统之间进行通信,以实现特定的功能或服务。 + +REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,用于设计网络应用程序。它基于HTTP协议,通过定义资源的标识符(URI)和对资源的操作(HTTP方法),实现了客户端和服务器之间的通信。RESTful API遵循REST原则,提供了一种灵活、可扩展且易于理解的方式来构建和设计API。 + +### HTTP协议 + +HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议。它是互联网上数据交换的基础,通常用于在Web浏览器和服务器之间传输网页和资源。HTTP基于客户端-服务器模型,客户端发送HTTP请求,服务器返回HTTP响应。 + +HTTP请求由请求方法、请求URI、协议版本、请求头部和请求体组成。常用的HTTP请求方法包括GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。 + +HTTP响应由状态码、响应头部和响应体组成。状态码指示了请求的处理结果,常见的状态码包括200(成功)、404(未找到资源)、500(服务器内部错误)等。 + +### REST约束 + +REST架构风格包括一系列的约束条件,以确保系统的可伸缩性、简单性和可移植性。其中一些重要的REST约束包括: + +1. **客户端-服务器架构**:客户端和服务器分离,使得客户端和服务器可以独立地演化和扩展。 +2. **无状态性**:每个请求都包含了足够的信息,使得服务器可以理解并处理请求,而不需要依赖于之前的请求或会话状态。 +3. **缓存**:服务器可以对响应进行标记,以便客户端可以缓存响应并重复利用它们,从而提高性能。 +4. **统一接口**:通过统一的接口(例如URI、资源操作、媒体类型)来简化系统架构,并使得不同的组件可以独立演化。 +5. **分层系统**:通过层次化架构,使得客户端不需要了解整个系统的结构,只需与其交互的接口。 + +### 对REST的错误理解 + +1. **REST是一种协议**:实际上,REST是一种架构风格而不是协议。它基于HTTP协议,但并不限制于HTTP。虽然大多数RESTful API都使用HTTP作为通信协议,但它们也可以在其他协议上运行,如WebSocket。 + +2. **每个HTTP接口都是RESTful的**:即使一个API使用HTTP,并且使用了一些RESTful的理念,但并不意味着它就是真正的RESTful API。RESTful API需要遵循一系列约束条件,如无状态、统一接口等,而不仅仅是使用HTTP协议。 + +3. **URI中的动词表示操作**:RESTful API中,URI应该表示资源而不是操作。操作应该由HTTP方法来表示,例如GET用于获取资源,POST用于创建资源,PUT用于更新资源,DELETE用于删除资源。 + +4. **RESTful API需要使用所有的REST约束**:虽然RESTful API应该尽可能地遵循REST约束,但并不是所有的约束都适用于所有的情况。有时候根据实际情况做出权衡是可以接受的,例如在需要保持会话状态的应用中,无状态性约束可能无法完全实现。 \ No newline at end of file -- Gitee