Flask http的请求与响应
请求
文档: https://flask.palletsprojects.com/en/2.0.x/api/#flask.Request
- request:flask中代表当前请求的
request 对象 - 作用:在视图函数中取出本次客户端的请求数据
- 导入:
from flask import request - 代码位置:
- ? 代理类 from flask.app import Request ---> from flask.globals.Request
- ? 源码类:from flask.wrappers.Request
- ? 基类:from werkzeug.wrappers import Request as RequestBase
request,常用的属性如下:
| 属性 | 说明 | 类型 |
|---|---|---|
| data | 记录请求体的数据,并转换为字符串 只要是通过其他属性无法识别转换的请求体数据 最终都是保留到data属性中 例如:有些公司开发微信小程序,原生IOS或者安卓,这一类客户端有时候发送过来的数据就不一样是普通的表单,查询字符串或ajax |
bytes类型 |
| form | 记录请求中的html表单数据 | ImmutableMultiDict |
| args | 记录请求中的查询字符串,也可以是query_string | ImmutableMultiDict |
| cookies | 记录请求中的cookie信息 | Dict |
| headers | 记录请求中的请求头 | ImmutableMultiDict |
| method | 记录请求使用的HTTP方法 | GET/POST |
| url | 记录请求的URL地址 | string |
| files | 记录请求上传的文件列表 | ImmutableMultiDict |
| json | 记录ajax请求的json数据 | Dict |
from flask import Flask, request
from werkzeug.datastructures import ImmutableMultiDict
from werkzeug.wrappers import Request as RequestBase
from flask.wrappers import Request
# 项目实例应用对象
app = Flask(__name__)
# 加载配置
app.config.update({
"DEBUG": True
})
# 在http的常用请求方法中,delete和get是没有请求体的!!!
@app.route(rule="/data", methods=["post", "put", "patch"])
def data():
"""获取请求体"""
# 获取原生的请求体数据[当request对象的其他属性没法接受请求体数据时,会把数据保留在data中,如果有request对象的属性处理了请求体数据,则data就不再保留]
# print(request.data) # 如果客户端上传的是xml文档,html格式,二进制流格式,base64格式,就要使用data来接收
"""
1. 没有上传任何数据:
b''
2. 上传json数据
b'{\n "username": "xiaoming",\n "age": 16\n}'
3. 上传表单数据
b''
4. 上传xml数据
b'\n \xe5\x95\x86\xe5\x93\x81\xe6\xa0\x87\xe9\xa2\x981 \n \xe5\x95\x86\xe5\x93\x81\xe6\xa0\x87\xe9\xa2\x982 \n '
"""
# 接收表单上传的数据
# print(request.form)
"""
ImmutableMultiDict([('name', '小明'), ('age', '19')])
"""
# 接收ajax上传的json数据
# print(request.json) # {"username": "xiaoming", "age": 16}
# print(request.is_json) # True 往往用于判断是否是ajax请求
# 上传文件列表 HTML必须以