数据从哪里读:args、form、json、data、values 到底有什么区别?GET 能带正文吗?PUT 的表单会被解析吗?这篇用一个视图和 12 种请求做出一张对照表。
GET ?a=1 → 200 args={'a': '1'} form={} files=[] json='UnsupportedMediaType' data='' values={'a': '1'}
GET + JSON 正文 → 200 args={} form={} files=[] json={'j': 1} data='{"j": 1}' values={}
GET + 表单正文 → 200 args={} form={'f': '1'} files=[] json='UnsupportedMediaType' data='' values={}
POST 表单 → 200 args={} form={'f': '1'} files=[] json='UnsupportedMediaType' data='' values={'f': '1'}
POST ?a=1 + 表单 → 200 args={'a': '1'} form={'f': '1'} files=[] json='UnsupportedMediaType' data='' values={'a': '1', 'f': '1'}
POST JSON → 200 args={} form={} files=[] json={'j': 1} data='{"j": 1}' values={}
POST ?a=1 + JSON → 200 args={'a': '1'} form={} files=[] json={'j': 1} data='{"j": 1}' values={'a': '1'}
POST multipart → 200 args={} form={'f': '1'} files=['file'] json='UnsupportedMediaType' data='' values={'f': '1'}
POST text/plain → 200 args={} form={} files=[] json='UnsupportedMediaType' data='raw text' values={}
PUT 表单 → 200 args={} form={'f': '1'} files=[] json='UnsupportedMediaType' data='' values={'f': '1'}
PATCH JSON → 200 args={} form={} files=[] json={'j': 2} data='{"j": 2}' values={}
DELETE ?a=1 → 200 args={'a': '1'} form={} files=[] json='UnsupportedMediaType' data='' values={'a': '1'}上一篇:Form Data 与 JSON Body;下一篇:文件上传与 FileStorage。
JSON {'get_json()': {'a': 1}, 'get_json(silent=True)': {'a': 1}, 'request.json': {'a': 1}}
表单 {'get_json()': 'UnsupportedMediaType(415)', 'get_json(silent=True)': None, 'request.json': 'UnsupportedMediaType(415)'}
空正文无类型 {'get_json()': 'UnsupportedMediaType(415)', 'get_json(silent=True)': None, 'request.json': 'UnsupportedMediaType(415)'} 从第一节:POST 表单 data = | POST JSON data = {"j": 1} | text/plain data = raw text (get_data_len = 8 )args["k"] = args | form["k"] = form | values["k"] = args (args 在前)
args["id"] = '5' | json["id"] = 5