首页 前端知识 requests库post请求参数data、json和files的使用,postman的各种数据格式

requests库post请求参数data、json和files的使用,postman的各种数据格式

2024-04-29 12:04:17 前端知识 前端哥 906 926 我要收藏

x-www-form-urlencoded

application/x-www-form-urlencodedapplication/json 是两种不同的 HTTP 请求体格式,它们在 Python 中的处理方式也不同。

application/x-www-form-urlencoded 是 Web 表单默认的提交方法,浏览器会将表单数据编码为 key-value 键值对,并将其放在请求体中。该格式数据可以通过 Python 中的标准库 urllib.parse 进行解析,例如:

from urllib.parse import parse_qs

# 请求体数据
data = b'name=John&age=30'

# 从请求体中解析出表单数据
form_data = parse_qs(data.decode())

此时 form_data 的结果为:

{'name': ['John'], 'age': ['30']}

application/json 是一种常用的数据格式,在这种格式下,请求体中的数据会被编码成 JSON 格式,并放在请求体中,需要使用 json 库进行解析。例如:

import json

# 请求体数据
data = b'{"name": "John", "age": 30}'

# 从请求体中解析出 JSON 数据
json_data = json.loads(data)

此时 json_data 的结果为:

{'name': 'John', 'age': 30}

综上所述,application/x-www-form-urlencodedapplication/json 的处理方式有所不同,需要根据实际情况进行选择和使用。

form-data

multipart/form-data 是一种比较常见的 HTTP 请求体格式,常用于对二进制或文本文件进行上传。这种格式不同于 application/x-www-form-urlencoded,它可以在请求体中传输二进制数据,也就是允许上传文件。

在 Python 中,处理 multipart/form-data 类型的请求体可以使用 requests 库中的 post 方法。例如:

import requests

# 文件路径
file_path = 'example.jpg'

# 发送 POST 请求
response = requests.post(
    'http://example.com/upload', 
    files={'file': open(file_path, 'rb')}
)

在这个例子中,我们使用 requests 库的 post 方法发送一个 multipart/form-data 类型的 POST 请求,上传指定路径下的文件。使用字典形式的 files 参数来传递上传的文件,字典的 key 为提交数据的字段名称,字典的 value 为文件对象(使用 Python 内置 open() 函数打开文件对象)。

如果请求体中包含了其他的表单数据,可以使用字典形式的 data 参数来传递这些数据,类似于 application/x-www-form-urlencoded 的格式。示例:

import requests

# 文件路径和其他表单数据
file_path = 'example.jpg'
data = {'name': 'John', 'age': '30'}

# 发送 POST 请求
response = requests.post(
    'http://example.com/upload', 
    files={'file': open(file_path, 'rb')},
    data=data
)

在此例子中,我们除了上传文件之外,还将一个包含姓名和年龄的表单数据一并上传。字典形式的 data 参数用来传递这些数据。

requests库post请求参数data、json和files的使用

参考:https://blog.csdn.net/qq_31699845/article/details/124849600

传文件和表单示例

如果要传文件,可以使用 requests 库的 files 参数来实现文件上传。使用 files 参数,它将自动采用 multipart/form-data 格式来编码请求体数据。

下面是一个例子,展示如何在客户端发送文件上传请求,包括一个文件和一些文本数据:

import requests

url = 'http://localhost:8000/upload'
files = {'file': open('example.txt', 'rb')}
data = {'name': 'John', 'age': '30', 'gender': 'Male'}
response = requests.post(url, files=files, data=data)
print(response.text)

在上面的代码中,我们向 http://localhost:8000/upload 发送了一个 POST 请求。files 参数是一个字典类型。字典的键就是表单字段名,值可以是字符串或者文件字节。在上面的代码中,example.txt 是一个需要上传的文本文件。表单中的其他数据采用了 data 参数传递,也是一个字典类型。

在服务端,我们可以使用 FastAPI 框架来解析上传的文件和表单数据:

from fastapi import FastAPI, File, Form, UploadFile

app = FastAPI()

@app.post("/upload")
async def create_upload_file(file: UploadFile = File(...), name: str = Form(...), age: int = Form(...), gender: str = Form(...)):
    content = await file.read()
    return {"filename": file.filename, "name": name, "age": age, "gender": gender}

在上面的代码中,我们定义了一个 /upload 的路由,使用了 FastAPI 框架。使用 UploadFile 类型解析上传的文件,使用 Form 类型解析表单中的其他数据。在 create_upload_file 函数中,使用了 file.read() 方法来获得上传文件的内容。可以将上传文件的文件名、表单中的其他数据返回给客户端。

在本例中,客户端将文件和表单数据一起发送到服务器,而服务器使用 UploadFileForm 类型来解析它们。FastAPI 框架允许我们很容易地把所有这些格式的请求数据都组合在一起。”

希望这个例子能够帮助你。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6363.html
标签
postmanlua
评论
发布的文章

HTML5本地存储

2024-05-06 09:05:10

HTML5和CSS3新特性

2024-04-16 17:04:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!