diff --git "a/\345\274\240\346\240\207\346\230\237\345\256\211/.keep" "b/\345\274\240\346\240\207\346\230\237\345\256\211/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\345\274\240\346\240\207\346\230\237\345\256\211/20240514-Rest.md" "b/\345\274\240\346\240\207\346\230\237\345\256\211/20240514-Rest.md" new file mode 100644 index 0000000000000000000000000000000000000000..48ce4188ca6c723ea54842528eb556d8a81a41d9 --- /dev/null +++ "b/\345\274\240\346\240\207\346\230\237\345\256\211/20240514-Rest.md" @@ -0,0 +1,57 @@ +# 一、API与REST +### 1.什么是API +- 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节 +- API的主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。 +### 2.什么是REST + +- REST是一种软件构架风格,是一种规定了如何发送和接收数据的方式 +- REST的核心理念就是将资源(例如文本、图片、音频等等)以统一的接口进行管理,这些资源可以通过URL进行访问,并使用标准的HTTP方法进行操作 +- REST和HTTP有一定的关系,资源在服务的提供方和请求方之间进行传递,,需要借助协议来约,而HTTP协议完全可以满足REST中所定义的约束 + +## 二、HTTP协议 +### 1.简介 +HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443。 + +HTTP中最重要的就是HTTP协议格式,分为请求协议和响应协议。通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫“请求协议(request)”;服务器发送给客户端的格式叫“响应协议(response)”。 + +### 2.统一资源定位符(URL) +##### 1.URL组成部分 +1. http://(URL协议):除http://外,常见的协议还有https://(加密)、ftp://(文本传输协议)、mailto://(电子邮件协议)等等 +2. www.***.com(主机名,也可以叫域名) +3. /user/1(URL路径):具体指向服务器上的具体资源 +4. 端口号:在主机名后面,以:隔开。HTTP协议默认使用80端口号 +5. 查询字符串:URL问号后面的参数部分,参数名和参数用=分隔,多个参数用&分隔 + + +##### 2.URL和URI的区别 +URL是URI的子集,一个URL就是一个URI +### 3.媒体类型 +##### 1.概念 +当HTTP服务器返回响应时,不但返回资源本身,也会在响应中指明资源的内容类型,就叫做媒体类型。HTTP依赖于MIME标准,媒体类型也叫MIME类型。浏览器通过MIME类型决定如何处理文档,只有设置正确的MIME类型,才会被识别 +##### 2.常见的MIME类型 +1. text/plain:纯文本 +2. text/html:HTML内容 +3. image/jpeg/png:表示JPEG/png图片 +4. application/json:表示JSON格式的数据 + +### 4.HTTP消息 +是服务器和客户端之间交换数据的方式,有两种类型:请求消息和响应消息。两种消息都包括以下四个部分的内容: +- 起始行:用于描述要执行的请求、对应的状态 + 1. HTTP方法 + - GET:获取资源,但是是不会修改资源,是安全方法(指不会修改资源),而且是幂等方法(多次调用效果总是一样的) + - POST:创建资源,会修改服务器上的资源,不是安全方法,也不是幂等方法 + - PUT:更新资源,会修图该资源,不是安全方法,却是幂等方法;另外当资源不存在,可以实现创建资源 + - DELETE:删除资源,不是安全方法,却是幂等方法 + - PATCH:对资源进行部分更新(例如部分字段或属性),不是安全方法,也不是幂等方法 + - HEAD:与GRT相同,但是不返回消息正文,通常用于检测资源是否存在以及获取资源的元数据 + - OPTIONS:获取资源支持的操作 + +### 三、设计资源的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末尾不应该包含斜线/,不但没有意义还会造成歧义 \ No newline at end of file