一、鉴权
http://testingpai.com/article/1621929988356
1、session鉴权
2、token鉴权
注册(数据库存储用户名和密码)
登陆(提交用户名+密码) --- 后端获取到用户名密码(进行校验密码和用户名是否与数据库存储的一致) --- 给我令牌(token)
算法生成token(rootAa12345620412010) --- 返回给客户端 ---- 客户端再次请求接口带上token --- 后端接收到token
解析token(rootAa12345620412010) --- 时间戳(20412010)+ 10用户的唯一标识 --- 通过用户唯一标识去数据库找到生成token需要的数据
再生成一次token(rootAa12345620412010) --- 那生成的和你给我的对比 + 时间戳间隔对比 --- token一致就返回接口数据
3、重点
3.1、token生成规则(后端决定)
3.2、如何校验token正确性、如何校验token有效时间
3.3、token替换规则(后端决定)
二、requests
1、什么叫接口
USB:传数据
互联网:用来传数据
2、接口必要数据
请求地址: https://openapiv5.ketangpai.com/UserApi/login
请求方法:post、get
请求数据:
响应参数:
3、使用
requests:支持所有的http请求方式
3.1、get请求
# url:请求地址,
# params=None:请求参数
# **kwargs:其他字段
1、参数放在url后面:'http://httpbin.org/get?key1=val1&key2=val2'
2、参数使用params关键字接收,会自动拼接到url地址后面
3、?:表示后面都是查询参数,key1=val1形式展示,多个参数使用&进行连接
一、post请求
url: 请求地址
data=None:请求参数
data关键字:默认'Content-Type': 'application/x-www-form-urlencoded'
如果设置请求头'Content-Type': 'application/json;charset=UTF-8',就使用设置的方式
json=None:请求参数
json关键字:默认 'Content-Type': 'application/json;charset=UTF-8'
如果设置请求头'Content-Type': 'application/x-www-form-urlencoded',就使用设置的方式
**kwargs:接收其他字段
二、参数格式
application/x-www-form-urlencoded
默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码,空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值。 窗体数据被编码为:名称/值对,这是标准的编码格式。
application/json
数据以 JSON 形式进行编码
multipart/form-data,头像
窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到。在使用包含文件上传控件的表单时,必须使用该值。
text/html
文本方式的网页文件。
text/xml
文本方式的 XML 文件,text/xml 忽略 XML 头所指定编码格式而默认采用 US-ASCII 编码。
text/plain
窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。空格转换为 “+” 加号,但不对特殊字符编码。
application/xml
数据以 XML 形式进行编码,application/xml 会根据 XML 头指定的编码格式来编码。
三、POST与GET区别
1、参数传递
get:放在请求地址后面,查询数据,向后端获取数据,传的是查询参数(where条件)
post:放在body里面,提交参数,OCR参数、图片、文件
2、参数长度
get、post参数长度实际上是由后端配置决定,并不是请求本身决定
get请求会做参数大小的限制:比较小
post请求也会做参数大小限制:稍微大一些
3、安全性
get参数暴露在浏览器地址上
post放在body里面,需要抓包才能看见
4、幂等性
处理同一个请求的重复发送的方式
get请求查询一次和查询N次得到的结果都是一样
post请求提交数据:注册,需要做幂等处理
前端防多点,后端幂等
![]()
from pprint import pprint
import requests
# data关键字:'Content-Type': 'application/x-www-form-urlencoded'
# json关键字:Content-Type: application/json;charset=UTF-8
url="http://httpbin.org/post"
headers = {'Content-Type': 'application/json'}
data={"key1":"val1","key2":"val2"}
res = requests.post(url=url,data=data,headers=headers)
pprint(res.json())
View Code