### 一,什么是接口
## 什么是接口
- USB 是, 硬件接口
- 耳机 3.5mm 是
- api.github.com 服务端,客户端,电视
- UI:user interface 用户接口, 用户界面
- 函数: 公开访问才能是接口
- API: application programming interface , 应用程序可编程接口
接口,两个不同事物之间进行适配的一种工具、规范和协议。
接口的实现。
## 接口分类
-硬件接口:指两个硬件设备之间的连接方式。
-软件接口:简单来说就是软件程序之间数据交互的通道。
程序内部接口:是客户端与服务器的接口,用来实现客户端和服务器间的数据传递。
外部接口:外部接口常见的典型例子就是通过第三方登录、第三方支付等,通过调用第三方接口并返回当前的系统
### 二,什么是网络请求, HTTP
- 客户端,前端。主动请求。能够发起对应的请求的客户端。
- 服务端,后端。被动接受。
常见的接口协议:
http协议接口:使用最广泛,使用HTTP协议来传输数据,有get、post等,常见的测试工具postman、jmeter
websocket、dubbo
webservice接口:使用soap协议通过http传输,请求报文和返回报文都是xml格式的。常用的测试工具:soapUI
## 什么是接口测试
接口测试:本质是基于某种协议,发送一个请求给服务器,然后服务器返回一个响应数据,然后对响应数据进行分析,判断是否与我们预期的返回一致,从而
验证功能是否正确,这就是接口测试。
### 三,HTTP 请求 协议。
https:http+ssl(加密)
http默认端口:80;https默认端口:443
- 请求首行
- 请求头, headers, content-type, 数据格式,爬虫 user-agent: 限制请求的来源。
- 请求体
#### 1,请求首行
- url, 域名地址,ip
- 请求方法
- GET:用于获取资源(没有请求体)
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。post请求可能会导致新的资源的建立和/或已有资源的修改
- PUT:用于更新服务器的数据(数据整体更新)
- DELETE:用于删除服务器指定的数据
- OPTION:允许客户端查看服务器的性能
- HEAD:类似于get请求,只不过返回的响应中没有具体内容,用于获取报头
- PATCH:用于更新服务器的数据(局部更新)
- 远程 IP 地址
- 协议版本
http > tcp / ip 172.123.3.45
##### (一), 域名和 IP 地址的区别
- 域名更好记忆;
- 映射 IP 地址。
- DNS 解析: 域名 --》 ip
网络通信就是送包裹,送快递。
- 为什么要有 IP 地址。 邮政系统,送快递。
- 为什么要有端口号。 送到哪个房间。
- 为什么要有域名? 记不住 IP
访问完域名以后,要进行 DNS 解析,获取地址才能送信啊。
##### (二),GET 和 POST 的区别
- GET 表示从服务器上获取资源,POST 表示向服务器传送数据,创建资源;
- GET 没有请求体,POST 有请求体;
- GET 请求参数(query string查询字符串)放在url中以`?key1=value1&key2=value2`(query string)的形式, POST 不仅可以查询字符串,而且可以放在请求体里面。
- 为什么说 POST 比 GET 更安全?
| Body参数方式 | Content-type |
| ---------- |----------------------------------|
| Text | text/plain |
| Form | application/x-www-form-urlencoded |
| JSON | application/json |
| File | 不确定 |
#### 2,请求头
你包裹上面的说明,你寄的是什么啊,多久到啊,价值多少啊。你这个请求的说明信息。
不需要每个都了解,但是如果某个收包裹的人(服务器)要求你必须带上指定的头信息,你就要带上,不然访问不成功。。。 比如很多退件的,会给你说明,不要到付,到付拒收!!
就算他没有说明,你到付,也不会有人收。。
- user-agent
- 用户代理
- 手机,浏览器, postman, jemter
- content-type : 请求数据格式
- cookie
- 会员卡
#### 3,请求体
你的包裹。 包裹可能是空的,你把一些信息直接放到包裹说明上,懒得拆了。 --》 我很好,不用担心。放到里面多麻烦,有风险。太容易被人看到了。
快递:勿忘我
### 四,响应
#### 1,响应首行(状态行)
- 协议版本号
- 响应的状态码。
- 内部人员规定一种非常专业的信息格式,暗号。
- 0001 表示 我已收到回件,
- 0002 已装车,且一切正常。。。
- 更加简洁。
| 状态码大类 | 表示的含义 | 客户端client要做的事 | 服务器端server要做的事 |
| ---------- | --------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1xx | Informational 信息 | 啥都不用做,知道就好 | 告诉client,信息收到了,我后续会处理 |
| 2xx | Successful 成功 | 啥都不用做,知道就好 | 告诉client,请求已正确处理 |
| 3xx | Redirection 重定向 | 重新请求返回的新地址 -> 才能获取真正需要的数据 | 告诉client,你需要的内容,由于一些原因,比如地址已发生变化了,然后返回该内容的新地址 |
| 4xx | Client Error客户端的错误 | 确保用正确的参数和信息正确,重新请求 | 告诉client,请求已正确处理 |
| 5xx | Server Error 服务器端的错误 | (一般来说)都无需啥操作 -> 往往需要服务器端改了bug后,重新发送请求 | 需要服务器Server端自己找到具体出了啥错 -> 往往是服务器端的代码的bug导致了出错 |
##### (一),最常用的状态码及含义
- Successful - 2xx:成功类,行为被成功地接受、理解和采纳
- - 200 OK
- 服务器成功返回用户请求的数据
- 往往为了简化处理
- POST创建成功后应该返回201的,创建
- 404 NOT FOUND
- 找不到资源
- 500 INTERNAL SERVER ERROR
- 服务器内部错误
- 最常见的原因是:服务器内部挂了
- 比如你传递参数中有些参数是空,而导致后台代码无法解析,出现异常而崩溃
##### (二),次常用的状态码及含义次常用的响应码及含义
- Successful - 2xx:成功类,行为被成功地接受、理解和采纳
- 201 CREATED
- 通过POST或PUT创建资源成功
- 204 NO CONTENT
- 资源修改成功,但是没有返回内容
- 常用于DELETE操作的返回
- Redirection - 3xx:重定向类,为了完成请求,必须进一步执行的动作
- 301 永久重定向
- 302 临时重定向
- 304 Not Modified 使用缓存数据
- Client Error - 4xx:客户端错误类,请求包含语法错误或者请求无法实现
- - 401 UNAUTHORIZED
- - 没有权限访问该资源
- 典型情况:用户没有登录,没有获得对应的access token而直接访问某资源
- 403 FORBIDDEN
- 禁止访问
- 典型情况:虽然用户已登录,但是去更新/删除需要更高权限才能操作的资源
- 405 METHOD NOT ALLOWED
- 方法不允许
- 举例:比如某个资源不允许POST请求,但是你确发起了POST请求
- 5xx:服务器错误
- 502 网关错误
- 504
#### 2, 响应头
- content-type, 返回数据的格式
- set-cookie: name=yuz
#### 3, 响应体
- 返回的数据
- json, text, html
### 五,cookie, session 和 token
- cookie
- http 是无状态的,没有记性。
- cookie 是让服务器记住你。发会员卡,给你推荐
- 存储在浏览器
- session。
- 在服务器记住用户信息状态的。验证
- 服务器验证
- token, 令牌。 跨平台。 只要他有这个令牌,不管他是什么身份,手机,浏览器,电视,
- 保存在客户端本地, local_storage
- 移动端流通。手机,平板,web, 第三方客户端
- 口令
- 口令是会变的。
## 什么是 Token
token 的意思是 “令牌”, "门票”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
这里有一份接口文档:
```json
http://www.keyou.site:8000/docs/
```
访问其中一个接口:
```json
GET http://api.keyou.site:8000/interfaces/
```
## Token 和 Session
1. token 是需要手动传到参数当中的。 session 派发的 session_id 自动存储在浏览器的 cookie api.keyou.site/ 当中,
在下次访问这个网站的时候,会自动带上。
2. session_id 会存到服务器,需要消耗资源, 在浏览器传输过来,要查询,也消耗资源。(IO)
3. token 不需要存储到服务器,服务器会解密,消耗 cpu,
4. token 可以跨平台,跨域。 session
### 六,输入 url 后的过程
a.域名解析,DNS 解析 -》 ip 地址(分层级)
b.发起TCP连接的三次握手,建立连接。
c.建立TCP连接后发起http请求
d.服务端响应http请求,返回响应报文
e.浏览器页面渲染,展示。
f.断开TCP连接,四次挥手
### 七,三次握手四次挥手
- 第一次握手:建立连接时,客户端向服务端发送请求报文(SYN),“我想建立连接”
- 第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文(SYN/ACK)“同意建立”
- 第三次握手:客户端收到服务器的确认后,再次向服务器发送确认报文,完成连接(ACK)
- 三次握手主要是为了防止已经失效的请求报文字段发送给服务器,浪费资源。
- 第一次挥手:客户端想分手,发送消息(FIN)给服务器
- 第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备;
- 第三次挥手:服务器已经做好分手准备,通知客户端(FIN)
- 第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接。
作业:
总结以下内容:
1, GET 和 POST 区别
2, cookie , session 和 token 区别
3, 三次握手四次挥手是什么?
4,你知道的常用状态码有哪些?代表什么意思