python rest请求、requests

张开发
2026/4/7 8:56:48 15 分钟阅读

分享文章

python rest请求、requests
文章目录安装依赖get请求post请求发送带file文件的请求发送带file文件的请求-1、表单发送带file文件的请求-2、二进制其他文档测试url可以自己造这里演示用httpbin网站提供的比较方便。安装依赖pip install requestsget请求importrequests# 目标 URL (这是一个测试用的接口返回请求信息)urlhttps://httpbin.org/get# 定义 URL 参数 (字典格式)params{page:1,limit:10,search:python}# 定义请求头 (模拟浏览器防止部分网站反爬虫)headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36}try:# 发送 GET 请求# params 参数会自动拼接到 url 后面responserequests.get(url,paramsparams,headersheaders,timeout5)# 检查状态码是否为 200ifresponse.status_code200:print(✅ 请求成功)# 获取 JSON 格式的数据dataresponse.json()print( 返回数据:,data)else:print(f❌ 请求失败状态码:{response.status_code})exceptrequests.exceptions.RequestExceptionase:print(f❌ 发生异常:{e})post请求importrequests urlhttps://httpbin.org/post# 表单数据payload{username:admin,password:123456,remember:true}try:responserequests.post(url,datapayload,timeout5)ifresponse.status_code200:print(✅ 表单提交成功)json_dataresponse.json()# 查看服务器接收到的 form 数据print( 服务器接收到的表单:,json_data.get(form))else:print(f❌ 提交失败:{response.status_code})exceptExceptionase:print(f❌ 发生错误:{e})发送带file文件的请求主要有两种形式1、表单2、二进制注意发送前要用json.dumps()序列化下。发送带file文件的请求-1、表单importrequestsimportjson urlhttps://httpbin.org/post# 测试接口# 1. 准备 JSON 数据结构json_payload{user_id:12345,description:这是文件的元数据,tags:[test,python]}# 2. 准备文件流 (以二进制读取)# 假设我们有一个名为 test.jpg 的文件try:withopen(test.jpg,rb)asf:# files 字典的值可以是元组: (文件名, 文件对象, MIME类型)files{file_field:(test.jpg,f,image/jpeg)}# data 字典的值必须是字符串所以要把 json 对象转成字符串data{json_data:json.dumps(json_payload)}# 3. 发送请求# 注意不要手动设置 Content-Typerequests 会自动生成 boundaryresponserequests.post(url,filesfiles,datadata)ifresponse.status_code200:print(✅ 上传成功)# 打印服务器收到的数据以验证res_jsonresponse.json()print( 收到的表单数据:,res_json.get(form))print( 收到的文件信息:,res_json.get(files))else:print(f❌ 失败:{response.status_code})exceptFileNotFoundError:print(❌ 文件未找到请确保目录下有 test.jpg)发送带file文件的请求-2、二进制importrequestsimportjson urlhttps://httpbin.org/postjson_payload{mode:stream,version:1.0}try:withopen(test.jpg,rb)asf:# 1. 将 JSON 转为字符串放入请求头# 注意HTTP 头通常不支持复杂嵌套的 JSON建议扁平化或者确保后端能解析headers{Content-Type:application/octet-stream,# 声明是二进制流X-Json-Meta:json.dumps(json_payload)# 自定义头存放 JSON}# 2. 直接将文件对象传给 dataresponserequests.post(url,dataf,headersheaders)ifresponse.status_code200:print(✅ 流上传成功)# 查看请求体长度是否匹配print(f 发送字节数:{len(response.request.body)})else:print(f❌ 失败:{response.status_code})exceptFileNotFoundError:print(❌ 文件未找到)其他文档httpbin测试url网站https://httpbin.org/#/

更多文章