欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Flask中@app.route()的methods参数详解

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

2024/12/25 7:34:01 来源:https://blog.csdn.net/PolarisRisingWar/article/details/144659034  浏览:    关键词:Flask中@app.route()的methods参数详解

诸神缄默不语-个人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 方法用于从服务器获取资源,一般不会携带请求体,也不会对服务器资源进行修改。

示例:

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 等方法,可以使用列表或元组来传递。

示例:

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)。
  • 示例
    @app.route("/get_example", methods=["GET"])
    def get_example():return "GET 请求返回的数据"
    

3.2 POST 方法

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

3.3 PUT 方法

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

3.4 DELETE 方法

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

3.5 PATCH 方法

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

3.6 OPTIONS 方法

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

4. 综合示例

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

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 参数必须是列表或元组

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

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

6. 总结

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

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

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com