You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中@app.route与@app.get装饰器的区别是什么?

Flask 路由装饰器差异说明

@app.get 是 Flask 2.0 版本新增的 HTTP 方法专属装饰器,属于 @app.route 限制单 HTTP 方法场景的语法糖,本质是对 @app.route 的简化封装。

具体差异

  • **默认支持的HTTP方法不同

@app.route("/greeting") 默认同时支持GET、HEAD、OPTIONS三种HTTP请求方法,你如果要限制仅支持GET请求,需要手动指定methods参数:@app.route("/greeting", methods=["GET"]), 此时才和@app.get的功能完全等价。
@app.get("/greeting") 内部已经固定指定了methods=["GET"],仅允许GET请求访问,不需要额外传参。

  • **灵活性不同

@app.route 是通用路由装饰器,支持通过修改methods参数适配任意HTTP方法组合,比如同时支持GET和POST可以写成@app.route("/xxx", methods=["GET", "POST"]), 适配场景更广泛。
@app.get 属于单方法专属装饰器,同类还有@app.post、@app.put、@app.delete等,仅适配路由仅需支持某一种HTTP方法的场景,代码更简洁,可读性更高。

  • **版本支持不同

@app.route 是Flask从初始版本就提供的基础API,所有Flask版本都可以正常使用。
@app.get 是Flask 2.0版本才新增的API,如果使用的是Flask 1.x及更早版本,无法使用该装饰器,这也是你在旧版文档中找不到相关说明的原因。

为什么测试时运行效果一致?

你测试时使用的是GET请求访问接口,此时两个装饰器都允许GET请求,因此返回结果相同。如果使用POST、PUT等其他请求访问时,@app.route配置的接口会正常返回200状态码,@app.get配置的接口会返回405 Method Not Allowed错误,实际功能并不完全一致。

内容的提问来源于stack exchange,提问作者Ehab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:36:05