Flask中@app.route()的methods参数详解

server/2024/12/24 22:12:32/

诸神缄默不语-个人CSDN博文目录

在 Flask 中,@app.route 是用于定义路由的核心装饰器,开发者可以通过它为应用指定 URL 映射及相应的处理函数。在处理 HTTP 请求时,不同的业务场景需要支持不同的 HTTP 方法,而 @app.routemethods 参数正是用于指定路由支持的 HTTP 方法。

本文将详细介绍 @app.route 的默认设置、methods 参数的显式设置,以及常见的 HTTP 方法及其使用场景,并结合代码示例进行说明。

文章目录

  • 1. 默认 `methods` 参数
  • 2. 显式设置 `methods` 参数
  • 3. 常见的 HTTP 方法
    • 3.1 `GET` 方法
    • 3.2 `POST` 方法
    • 3.3 `PUT` 方法
    • 3.4 `DELETE` 方法
    • 3.5 `PATCH` 方法
    • 3.6 `OPTIONS` 方法
  • 4. 综合示例
  • 5. 注意事项
  • 6. 总结

1. 默认 methods 参数

如果没有显式指定 methods 参数,Flask 默认只支持 GET 方法。GET 方法用于从服务器获取资源,一般不会携带请求体,也不会对服务器资源进行修改。

示例:

python">from flask import Flaskapp = Flask(__name__)@app.route("/")
def index():return "默认只支持 GET 请求"if __name__ == "__main__":app.run(debug=True)
  • 访问方式:通过浏览器或使用工具(如 curl)发送 GET 请求:
    curl http://127.0.0.1:5000/
    
  • 结果:服务器返回 "默认只支持 GET 请求"
  • 限制:如果发送其他方法(如 POST),会返回 405 Method Not Allowed

2. 显式设置 methods 参数

通过 methods 参数,可以为路由显式指定支持的 HTTP 方法。如果需要同时支持 GETPOST 等方法,可以使用列表或元组来传递。

示例:

python">from flask import Flask, requestapp = Flask(__name__)@app.route("/submit", methods=["GET", "POST"])
def submit():if request.method == "GET":return "这是一个 GET 请求"elif request.method == "POST":return "这是一个 POST 请求"if __name__ == "__main__":app.run(debug=True)
  • 访问方式
    • 发送 GET 请求:
      curl http://127.0.0.1:5000/submit
      
      返回结果:这是一个 GET 请求
    • 发送 POST 请求:
      curl -X POST http://127.0.0.1:5000/submit
      
      返回结果:这是一个 POST 请求

3. 常见的 HTTP 方法

3.1 GET 方法

  • 作用:从服务器获取资源。
  • 特点
    • 请求无副作用,不改变服务器上的资源。
    • 数据通常通过 URL 参数传递(query string)。
  • 示例
    python">@app.route("/get_example", methods=["GET"])
    def get_example():return "GET 请求返回的数据"
    

3.2 POST 方法

  • 作用:向服务器发送数据(如表单、JSON 数据),通常用于创建资源。
  • 特点
    • 数据放在请求体中,不显示在 URL 中。
    • 通常会对服务器上的资源产生影响。
  • 示例
    python">@app.route("/post_example", methods=["POST"])
    def post_example():data = request.json  # 假设发送 JSON 数据return f"接收到的 POST 数据:{data}"
    

3.3 PUT 方法

  • 作用:用于更新服务器上的资源(也可以创建资源)。
  • 特点
    • 语义上表示替换整个资源。
  • 示例
    python">@app.route("/put_example", methods=["PUT"])
    def put_example():data = request.jsonreturn f"PUT 请求更新了数据:{data}"
    

3.4 DELETE 方法

  • 作用:删除服务器上的资源。
  • 特点
    • 通常用于删除特定资源。
  • 示例
    python">@app.route("/delete_example", methods=["DELETE"])
    def delete_example():return "资源已删除"
    

3.5 PATCH 方法

  • 作用:用于部分更新资源。
  • 特点
    • PUT 不同,PATCH 只更新资源的某些字段。
  • 示例
    python">@app.route("/patch_example", methods=["PATCH"])
    def patch_example():data = request.jsonreturn f"PATCH 请求部分更新了数据:{data}"
    

3.6 OPTIONS 方法

  • 作用:返回服务器支持的 HTTP 方法。
  • 特点
    • 通常用于跨域请求的预检(CORS)。
  • 示例
    python">@app.route("/options_example", methods=["OPTIONS"])
    def options_example():return "OPTIONS 请求返回的响应头"
    

4. 综合示例

下面是一个支持多种 HTTP 方法的完整示例:

python">from flask import Flask, requestapp = Flask(__name__)@app.route("/", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"])
def handle_requests():if request.method == "GET":return "GET 请求"elif request.method == "POST":return "POST 请求"elif request.method == "PUT":return "PUT 请求"elif request.method == "DELETE":return "DELETE 请求"elif request.method == "PATCH":return "PATCH 请求"elif request.method == "OPTIONS":return "OPTIONS 请求"if __name__ == "__main__":app.run(debug=True)

5. 注意事项

  1. methods 参数必须是列表或元组

    python">methods=["GET", "POST"]
    
  2. 未指定 methods 默认只支持 GET 方法

    python">@app.route("/")  # 等价于 methods=["GET"]
    
  3. 请求方法区分大小写
    Flask 的 methods 参数值需要大写,比如 "GET",否则会导致路由匹配失败。

6. 总结

  • Flask 的 @app.route 默认只支持 GET 方法。
  • 通过 methods 参数,可以显式指定支持的 HTTP 方法。
  • 常见 HTTP 方法有 GETPOSTPUTDELETEPATCHOPTIONS,每种方法有不同的应用场景。
  • 动态处理不同 HTTP 方法,可以结合 request.method 编写逻辑。

希望通过这篇文章,你能够掌握 Flask 中 @app.routemethods 参数的用法。如果有其他疑问,欢迎在评论区交流!

在这里插入图片描述


http://www.ppmy.cn/server/152883.html

相关文章

高性能Web网关:OpenResty 基础讲解

一:概述 OpenResty是由国人章亦春开发的一个基于Nginx的可伸缩的Web平台。 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于方便搭建能够处理超高并发、扩展性极高的动态 web 应…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理,本文将介绍日志的另一个部分,操作日志,主要去描述SysLogger日志的工作原理,流程以及其中关键的实现:日志轮转,刷盘性能问题等&#xff…

16×16LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告+仿真+单片机源程序)

资料下载地址:​1616LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告仿真单片机源程序)​ 1、功能介绍 设计1616点阵LED显示器的驱动电路,并编写程序实现在1616点阵LED显示器上的字符滚动显示。1616点阵LED显示器可由4块88点阵LED显示器构成。可采…

1387. 将整数按权重排序 中等

我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数: 如果 x 是偶数,那么 x x / 2如果 x 是奇数,那么 x 3 * x 1 比方说,x3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 1…

PSO求解函数最小值的MATLAB例程|MATLAB源代码

本篇文章适合PSO入门,进阶的可能会觉得太简单的。 目录 PSO例程作用运行结果代码函数解释 例程修改tips完整代码: PSO Particle Swarm Optimization,粒子群优化算法,通过模拟鸟群或鱼群的行为来寻找最优解。在计算时通过对一群粒…

代理IP与科技创新:算力资源的灵活调度与高效利用

目录 一、代理IP的基本原理 二、代理IP在算力资源调度中的优势 流量管理与优化 提高访问速度 三、代理IP在AI算力集群中的应用 四、具体案例 电商领域 金融领域 制造业 媒体与娱乐 五、代理IP与AI技术的融合 六、面临的挑战与解决方案 七、结论 在数字化时代&…

【WRF教程第3.3期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例 非等压气象数据集(Using Non-isobaric Meteorological Data Sets)湖泊SST初始化(Alternative Initialization of Lake SSTs)WPS并行化(Parallelism in the WPS&#xff…

Golang中的Goroutine调度策略

Golang中的Goroutine调度策略是其并发编程模型的核心之一,它使得Go语言能够有效地利用硬件资源,处理大量的并发任务。以下是对Golang中Goroutine调度策略的详细叙述: 一、调度器模型 Golang的调度器采用M:N调度模型,其中M代表用…