在Flask中,request 对象提供了多种方法和属性来访问客户端请求的数据。以下是主要的 request 方法列表:
常用属性和方法
1. 请求数据访问
request.data # 原始请求体数据(字节字符串)
request.get_data() # 获取原始数据,可设置缓存和as_text参数
request.get_json() # 解析JSON数据,返回Python字典
request.form # 表单数据(MultiDict)
request.args # URL查询参数(MultiDict)
request.values # 表单和查询参数的组合
request.files # 上传的文件(MultiDict)2. 请求头信息
request.headers # 请求头信息
request.cookies # cookies字典
request.authorization # 认证信息
request.user_agent # 用户代理信息3. URL相关信息
request.url # 完整URL
request.base_url # 基础URL(不含查询参数)
request.host_url # 主机URL
request.path # URL路径部分
request.full_path # 路径+查询参数
request.host # 主机名(含端口)
request.script_root # 脚本根路径4. 请求方法信息
request.method # 请求方法(GET, POST等)
request.endpoint # 对应的端点名称
request.blueprint # 蓝图名称
request.view_args # URL规则匹配的参数5. 其他属性
request.remote_addr # 客户端IP地址
request.environ # WSGI环境字典
request.is_json # 检查请求是否有JSON内容类型
request.is_secure # 检查是否使用HTTPS
request.scheme # 请求方案(http或https)使用示例
from flask import Flask, request
app = Flask(__name__)
@app.route('/example', methods=['GET', 'POST'])
def example():
# 获取查询参数
name = request.args.get('name', 'default')
# 获取表单数据
if request.method == 'POST':
username = request.form.get('username')
email = request.form.get('email')
# 获取JSON数据
if request.is_json:
data = request.get_json()
# 获取上传的文件
file = request.files.get('file')
if file:
file.save('uploaded_file.txt')
# 获取请求头
user_agent = request.headers.get('User-Agent')
return f"Hello {name}, User-Agent: {user_agent}"注意事项
MultiDict 方法:
request.form,request.args,request.files返回的是MultiDict对象,支持:.get(key)- 获取第一个值.getlist(key)- 获取所有值的列表.keys()- 获取所有键
JSON 解析:
request.get_json()可以接受参数:force=True- 强制解析,即使Content-Type不是application/jsonsilent=True- 解析失败时返回None而不是抛出异常
数据缓存:
request.get_data(cache=True)可以缓存请求数据,避免多次读取。
评论