Flask中获取请求参数的一些方式总结

在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。


1. 获取 URL 查询参数(Query String Parameters)

URL 中的查询参数通过 ?key=value&key2=value2 的形式传递,使用 request.args 获取。

示例:
python 复制代码
from flask import Flask, request

app = Flask(__name__)

@app.route('/query')
def get_query_params():
    param1 = request.args.get('param1', default=None, type=str)  # 获取单个参数
    param2 = request.args.getlist('param2')  # 获取多个同名参数
    return f"param1: {param1}, param2: {param2}"

# 测试 URL: http://127.0.0.1:5000/query?param1=value1&param2=value2&param2=value3

2. 获取表单数据(Form Data)

当请求方法为 POSTPUT 时,可以通过 request.form 获取表单数据。

示例:
python 复制代码
@app.route('/form', methods=['POST'])
def get_form_data():
    name = request.form.get('name', default=None, type=str)  # 获取单个参数
    age = request.form.get('age', default=0, type=int)  # 获取并转换为整数
    return f"name: {name}, age: {age}"

# 测试:使用 Postman 或 curl 提交表单数据

3. 获取 JSON 数据

当客户端发送 JSON 格式的数据时,可以使用 request.json 获取解析后的字典。

示例:
python 复制代码
@app.route('/json', methods=['POST'])
def get_json_data():
    data = request.json  # 获取 JSON 数据
    name = data.get('name', None)
    age = data.get('age', 0)
    return f"name: {name}, age: {age}"

# 测试:使用 Postman 或 curl 提交 JSON 数据
# 请求头:Content-Type: application/json
# 请求体:{"name": "Alice", "age": 25}

4. 获取文件上传(File Uploads)

当上传文件时,可以通过 request.files 获取文件对象。

示例:
python 复制代码
@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files.get('file')  # 获取上传的文件
    if file:
        filename = file.filename
        file.save(f"./{filename}")  # 保存文件到本地
        return f"File uploaded: {filename}"
    return "No file uploaded"

# 测试:使用 Postman 或 curl 提交文件

5. 获取路径参数(Route Parameters)

路径参数是通过 URL 路径定义的动态部分,使用 <variable_name> 定义,并在函数中接收。

示例:
python 复制代码
@app.route('/user/<username>')
def get_user(username):
    return f"Hello, {username}!"

# 测试 URL: http://127.0.0.1:5000/user/Alice

6. 获取原始请求体(Raw Body)

如果需要直接获取请求的原始内容,可以使用 request.datarequest.get_data()

示例:
python 复制代码
@app.route('/raw', methods=['POST'])
def get_raw_data():
    raw_data = request.data.decode('utf-8')  # 获取并解码原始数据
    return f"Received raw data: {raw_data}"

# 测试:提交任意格式的原始数据

7. 获取 Headers

通过 request.headers 获取请求头信息。

示例:
python 复制代码
@app.route('/headers')
def get_headers():
    user_agent = request.headers.get('User-Agent')  # 获取 User-Agent
    host = request.headers.get('Host')  # 获取 Host
    return f"User-Agent: {user_agent}, Host: {host}"

# 测试:访问任意 URL

8. 获取 Cookies

通过 request.cookies 获取客户端发送的 Cookie。

示例:
python 复制代码
@app.route('/cookies')
def get_cookies():
    session_id = request.cookies.get('session_id', default=None)  # 获取 Cookie
    return f"Session ID: {session_id}"

# 测试:设置 Cookie 并访问

9. 获取 Method 类型

通过 request.method 获取当前请求的方法类型(如 GET, POST 等)。

示例:
python 复制代码
@app.route('/method', methods=['GET', 'POST'])
def get_method():
    return f"Request method: {request.method}"

# 测试:分别用 GET 和 POST 方法访问

10. 获取完整的 URL

通过 request.url 获取完整的请求 URL。

示例:
python 复制代码
@app.route('/url')
def get_full_url():
    return f"Full URL: {request.url}"

# 测试:访问任意 URL

总结

方式 使用场景 属性/方法
查询参数 URL 中的键值对 request.args
表单数据 HTML 表单提交 request.form
JSON 数据 客户端发送 JSON 格式数据 request.json
文件上传 文件上传 request.files
路径参数 动态路由中的参数 函数参数
原始请求体 获取未解析的请求体 request.data
Headers 获取请求头信息 request.headers
Cookies 获取客户端发送的 Cookie request.cookies
Method 类型 获取请求方法类型 request.method
完整 URL 获取完整的请求 URL request.url

以上方法涵盖了 Flask 中从 request 对象获取参数的主要方式,根据实际需求选择合适的方式即可。

相关推荐
sanjiaomao33324 分钟前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
北岛贰35 分钟前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
linweidong2 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界2 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎3 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
小刘在重生~3 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
2601_962099464 小时前
Python xlwt设置excel单元格字体及格式
python·excel·xlwt·样式设置·单元格格式
IT_陈寒4 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端
奇牙coding1234 小时前
GPT-6-Astra API 接入教程:OpenRouter 路由配置 + Python/curl 示例 + 静默降级踩坑
开发语言·python·gpt·ai
小兵金林4 小时前
AI 生成代码的思考与实践
后端·ai编程