Flask 中如何匹配请求方法 (GET, POST, PUT, DELETE 等)?

推荐答案

在 Flask 中,可以通过 @app.route 装饰器的 methods 参数来匹配请求方法。默认情况下,Flask 只处理 GET 请求,但可以通过显式指定 methods 参数来处理其他请求方法,如 POSTPUTDELETE 等。

-- -------------------- ---- -------
---- ----- ------ ------ -------

--- - ---------------

---------------------- --------------- ------- ------ ----------
--- ----------
    -- -------------- -- ------
        ------ ----- -- - --- --------
    ---- -------------- -- -------
        ------ ----- -- - ---- --------
    ---- -------------- -- ------
        ------ ----- -- - --- --------
    ---- -------------- -- ---------
        ------ ----- -- - ------ --------
    -----
        ------ ------------ ------- -------

本题详细解读

1. @app.route 装饰器

@app.route 是 Flask 中用于定义路由的装饰器。它允许你指定 URL 路径以及处理该路径的视图函数。默认情况下,@app.route 只处理 GET 请求。

2. methods 参数

methods 参数是一个列表,用于指定该路由可以处理的 HTTP 请求方法。常见的请求方法包括 GETPOSTPUTDELETE 等。通过指定 methods 参数,你可以让同一个视图函数处理多种请求方法。

3. request.method

request.method 是 Flask 提供的全局对象 request 的一个属性,用于获取当前请求的 HTTP 方法。通过判断 request.method 的值,你可以在视图函数中根据不同的请求方法执行不同的逻辑。

4. 示例代码解析

  • @app.route('/example', methods=['GET', 'POST', 'PUT', 'DELETE']):定义了一个路由 /example,并指定它可以处理 GETPOSTPUTDELETE 请求。
  • if request.method == 'GET'::判断当前请求是否为 GET 请求,如果是,则返回 'This is a GET request'
  • 类似地,代码中分别处理了 POSTPUTDELETE 请求,并返回相应的字符串。
  • 如果请求方法不在 methods 列表中,Flask 会自动返回 405 Method Not Allowed 错误。

通过这种方式,你可以灵活地处理不同的 HTTP 请求方法,并根据需要执行不同的逻辑。

纠错
反馈