接口基础D20

一,什么是接口

什么是接口

  • 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/ 当中,

在下次访问这个网站的时候,会自动带上。

  1. session_id 会存到服务器,需要消耗资源, 在浏览器传输过来,要查询,也消耗资源。(IO)

  2. token 不需要存储到服务器,服务器会解密,消耗 cpu,

  3. 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,你知道的常用状态码有哪些?代表什么意思

相关推荐
databook7 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar9 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780519 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_9 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机16 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机17 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机17 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机17 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i17 小时前
drf初步梳理
python·django
每日AI新事件17 小时前
python的异步函数
python