当前位置: 首页 > news >正文

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

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


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

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

示例:
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 获取表单数据。

示例:
@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 获取解析后的字典。

示例:
@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 获取文件对象。

示例:
@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> 定义,并在函数中接收。

示例:
@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()

示例:
@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 获取请求头信息。

示例:
@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。

示例:
@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 等)。

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

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

10. 获取完整的 URL

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

示例:
@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获取客户端发送的 Cookierequest.cookies
Method 类型获取请求方法类型request.method
完整 URL获取完整的请求 URLrequest.url

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

相关文章:

  • 什么是GraphQL?
  • Day45(补)【软考】2022年下半年软考软件设计师综合知识真题-计算机软件知识1
  • 电子制造企业数字化转型实战:基于Odoo构建MES平台的深度解决方案
  • DC-7靶机渗透测试全过程
  • 学习数据结构(10)栈和队列下+二叉树(堆)上
  • 机器学习实战(2):数据预处理——机器学习的第一步
  • C++效率掌握之STL库:string底层剖析
  • Zotero7 从下载到安装
  • K-均值(K-means)
  • LM Studio笔记
  • 使用 Vite + React 19 集成 Tailwind CSS 与 shadcn/ui 组件库完整指南
  • 日常知识点之遗留问题梳理(被问到用uml画设计模式)
  • Promise详解大全:介绍、九个方法使用和区别、返回值详解
  • 全面理解-c++11的引用折叠
  • PyQt6/PySide6 的 QPropertyAnimation 类
  • Golang GC 三色标记法
  • 多维度健康养生指南
  • 【计算机网络】网络层数据包(Packet)格式
  • 全方位养生指南:打造健康生活蓝图
  • vue-plugin-hiprint (vue2
  • 上海市重大工程一季度开局良好,崇明线等按既定计划加快建设
  • 孙简任吉林省副省长
  • 江西省市场监管局原局长谢来发被双开:违规接受旅游活动安排
  • 老镇老宅楼:破旧,没产证,要不要更新?
  • 尹锡悦涉嫌发动内乱案举行第三次庭审
  • 警方通报“网约车司机偷拍女乘客”:已被行政拘留