POST请求的几种编码格式

image-oeka.png

1. application/x-www-form-urlencoded

数据格式:将表单数据以键值对的形式编码成 URL 查询参数的格式,数据在请求体中以 key=value 的形式传递,并且键和值通过 & 连接。特殊字符会使用 URL 编码(例如,空格编码为 %20)。
浏览器原生支持:这是 HTML 表单默认的提交方式,浏览器原生支持。

数据参数格式

username=张三&password=123456

2. application/json

数据格式:使用 JSON 格式来传输数据,数据在请求体中以标准的 JSON 结构表示,支持对象、数组、嵌套结构等复杂的数据传递。
现代应用广泛使用:前后端分离的应用中,RESTful API 通常采用 JSON 格式进行数据传输。

数据参数格式

{
  "username": "张三",
  "password": "123456"
}

3. multipart/form-data

multipart/form-data不会对参数编码,使用的boundary(分割线)

其他

以下是 Flask 中获取请求参数的几种方式及其适用场景的解释:

request.form.get('token')

用于获取通过 POST 请求提交的表单数据(Content-Type: application/x-www-form-urlencoded 或 multipart/form-data)。
示例:如果前端通过表单提交了 token=abc123,可以通过此方法获取。

request.args.get('token')

用于获取 GET 请求中的查询参数(URL 中的 ?key=value 部分)。
示例:如果 URL 是 http://example.com/api?token=abc123,可以通过此方法获取。

request.data

用于获取原始请求体数据(raw body),通常适用于自定义格式的数据(如二进制文件或非 JSON 格式数据)。
返回值是字节类型(bytes),需要手动解析。
示例:如果前端发送的是纯文本或自定义编码的数据,可以使用此方法。

request.json

用于获取 JSON 格式的请求体数据(Content-Type: application/json)。
如果请求体是合法的 JSON 数据,request.json 会自动解析为 Python 字典。
示例:如果前端发送了 {"token": "abc123"},可以通过 request.json['token'] 获取值。

四下皆无人