diff --git "a/\347\231\275\345\251\211\345\251\267/20240516\347\256\200\344\273\213.md" "b/\347\231\275\345\251\211\345\251\267/20240516\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..b668b81a4fbd3d2555bb7a024b0023f9b59bdb51 --- /dev/null +++ "b/\347\231\275\345\251\211\345\251\267/20240516\347\256\200\344\273\213.md" @@ -0,0 +1,27 @@ +# API与REST +1. API 应用程序接口缩写为API又称为应用编程接口,是软件系统不同组成部分衔接的约定。API是一段应用程序与另一段应用程序相互“交流”的方式(协议)。API是通过网络进行数据检索的一种主要方式,API文档将告知你检索数据的URL列表、查询数据、请求方式以及响应状态,其目的是降低web应用程序开发难度,共享两个应用程序之间的数据(文本、音频、视频、图片等),而屏蔽其内部复杂的实现细节。 +2. REST 表述状态的转移 REST API是一组关于如何构建web应用程序API的架构规则、标准或指导,或者说REST API是是遵循API原则的一种架构风格。REST是专门针对web应用程序而设计的,其目的在于降低开发的复杂度,提高系统的可伸缩性。 +## 条件和原则 +1. 在REST架构中,Web中所有的事物(文本、音频、视频、图片、链接)都可以被同意的抽象为资源 +2. 在REST架构中,没一个资源都有与之对应的唯一资源标识符,当资源的状态发生改变时,资源标识符不会发生改变 +3. 在REST架构中,所有的操作都是无状态的,REST架构遵循CRUD原则,所有的资源都可以通过GET、POST、PUT和DELETE这四种行为完成对应的操作 +4. 可缓存、可选项,在REST架构中需要缓存来有效的处理大批量的请求 +5. 接口一致 + +# 设计资源的URL注意原则 +1. 使用名词的复数形式表示资源集合,如localhost:3000/books +2. 使用斜线/表示资源之间的层次关系,如/books/1——表示Id为1的图书信息 +3. 对资源的增删改查操作名称不能包含在URL中 +4. 如果一个操作无法对应到资源的某个操作上,可以适当地在URL中包含动词,如:【PUT /books/12/set-admin】 +5. 查询字符串可以对资源进行筛选、搜索或分页查询,如【GET /books?Id=12&pageNumber=2】 +6. URL使用小写字母 +7. 避免使用下划线_,用中划线—代替 +8. URL末尾不应该包含斜线/,不但没有意义还会造成歧义 + + +# API版本 + 当API发生了变化(比如资源表述内容新增或系统添加新资源类型等等),应该使用不同的版本来区别对API的更改,RESTAPI添加版本用以下4种方式: +1. 使用URL路径,比较常用,如localhost:3000/v1/books +2. 使用查询字符串,如/books?version=v1 +3. 使用自定义消息头,如Accept-version:v1 +4. 使用Accept消息头,如Accept:application/json;v=2.0 \ No newline at end of file