1、先安装requests:pip install requests
2、编写一个get请求
import requests
res=requests.get("https://www.baidu.com/")
#响应对象
print(res)
#获取响应状态码
print(res.status_code)
#获取响应数据
print(res.text) #返回的是字符串(<class 'str'>),一般用来获取文本
print(res.content) #返回的是bytes类型(<class 'bytes'>),也就是二进制数据;用来获取图片、音频、视频等
#print(res.json()) #返回的是字典(<class 'dict'>),如果返回的数据不是json格式,那么使用res.json()会报错;如上url返回的数据格式不是json格式,所以会报错
3、编写一个post请求
# """测试post请求"""
import requests
data_info={
"username": "lemon1",
"password": "123456"
}
# res=requests.post("http://api.keyou.site:8000/user/login/",data=data_info)
res=requests.post("http://api.keyou.site:8000/user/login/",json=data_info)
print(res.status_code)
print(res.text)
print(res.content)
print(res.json())
4、综合使用get请求与post请求
"""
登录接口:http://api.keyou.site:8000/user/login/
获取接口数据:http://api.keyou.site:8000/interfaces/
"""
import requests
url="http://api.keyou.site:8000/user/login/"
data_info={
"username":"lemon1",
"password":"123456"
}
res=requests.post(url,json=data_info) #发送post请求
response_data=res.json() #获取响应数据
token=response_data["token"] #提取响应数据的token
url="http://api.keyou.site:8000/interfaces/"
headers={
"Authorization":"JWT {}".format(token) #将获取的token保存在headers里
}
res1=requests.get(url,headers=headers) #传递url和token,获取接口数据
print(res1.json())
5、封装requests
"""
编写请求封装函数
"""
import requests
import logging
def visit(url,method="get",params=None,data=None,json=None,**kwargs):
res=requests.request(url=url,method=method,params=params,data=data,json=json,**kwargs)
try:
return res.json()
except Exception as e:
logging.error("返回数据不是 json 格式:{}".format(e))
return None
#调试程序
if __name__=="__main__":
url="http://api.keyou.site:8000/user/login/"
data={"username":"lemon1",
"password":"123456"}
useaaa=visit(url,method="post",json=data)
print(useaaa)
token=useaaa["token"]
url1="http://api.keyou.site:8000/interfaces/"
header={ "Authorization": "JWT {}".format(token)}
data=visit(url1,method="get",headers=header)
print(data)
6、总结:
函数def post(url, data=None, json=None, **kwargs)中
data表示form 表单格式数据,content-type 设置成 form-data
json表示json,content-type 设置成 application / json
看接口支持什么数据类型,具体看接口文档