一、基本概念
1、什么是接口
前后端数据传输的通道。
2、http请求的接口
协议+域名(ip)+接口地址+请求参数
3、http请求的要素
请求地址+请求方法+请求数据
二、request请求接口
1、安装
pip install requests
2、发起get请求
import requests
data = {"key1": "val1", "key2": "val2"}
# 第一种方式,把数据与域名分开,数据要单独给到params参数
# res = requests.get(url="https://httpbin.org/get", params=data)
# 第二种方式,数据与域名放在一起请求
res = requests.get(url="https://httpbin.org/get?key1=val1&key2=val2")
print(res.text)
3、发起post请求
post(url,data=None,json=None,**kwargs)
参数解释:
data:默认是form表单的请求编码格式
"Content-Type": "application/x-www-form-urlencoded"
传的是一个表单"form": {"key1": "val1", "key2": "val2"}。如下
import requests
data1 = {"key1": "val1", "key2": "val2"}
# "Content-Type": "application/x-www-form-urlencoded"
# data传参是,使用form表单的请求编码格式,传的是一个表单"form": {"key1": "val1", "key2": "val2"}
res = requests.post(url="https://httpbin.org/post", data=data1)
print(res.text)
json: 默认使用json请求编码格式
"Content-Type": "application/json"
传的是一个字典"data": "{\"key1\": \"val1\", \"key2\": \"val2\"}"。如下
import requests
data1 = {"key1": "val1", "key2": "val2"}
# "Content-Type": "application/json",
# json传参是,使用json请求编码格式,传的是一个字典"data": "{\"key1\": \"val1\", \"key2\": \"val2\"}"
# 最后拿到的就是json格式
res = requests.post(url="https://httpbin.org/post", json=data1)
print(res.text)
**kwargs:不定长参数,可以自定义请求头header或者cookie等
举例:使用自定义的请求头,如果设置了请求头“Content-Type”,就按照设置的编码方式传参(不建议使用)
import requests
data1 = {"key1": "val1", "key2": "val2"}
# 设置一个header
header = {"Content-Type": "application/json"}
# 我们使用data参数,默认是使用"Content-Type": "application/x-www-form-urlencoded"请求方式
# 设置header来自定义"Content-Type": ""application/json"
res = requests.post(url="https://httpbin.org/post", data=data1, headers=header)
print(res.text)
如下结果,我们看到请求方式被自定义成功
4、get与post的区别
安全性
1、get传参是放在url中,相对来说不安全
2、post请求数据是藏起来的,放在body里边,比较安全
使用场景
3、get请求一般是用来获取数据
4、post请求一般用于提交数据
参数长度
5、get请求一般参数有长度限制,由服务端来限制
6、post请求参数也有长度限制,也是由服务器来限制。但是post的参数长度一般要大于get
幂等性:就是说同一个接口同一个参数请求N遍返回结果都不会变
7、get请求都是幂等的
8、post一般是不幂等的(测试时要考虑这个问题,支付、注册、提现这种要做幂等处理)