当前位置: 首页 > 工具软件 > VuFind > 使用案例 >

requests学习

劳夕
2023-12-01

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
看接口支持什么数据类型,具体看接口文档

 
 
 类似资料: