推荐答案
在 Flask 中,可以通过 @app.route 装饰器的 methods 参数来匹配请求方法。默认情况下,Flask 只处理 GET 请求,但可以通过显式指定 methods 参数来处理其他请求方法,如 POST、PUT、DELETE 等。
// www.javascriptcn.com code example
from flask import Flask, request
app = Flask(__name__)
@app.route('/example', methods=['GET', 'POST', 'PUT', 'DELETE'])
def example():
if request.method == 'GET':
return 'This is a GET request'
elif request.method == 'POST':
return 'This is a POST request'
elif request.method == 'PUT':
return 'This is a PUT request'
elif request.method == 'DELETE':
return 'This is a DELETE request'
else:
return 'Unsupported request method'本题详细解读
1. @app.route 装饰器
@app.route 是 Flask 中用于定义路由的装饰器。它允许你指定 URL 路径以及处理该路径的视图函数。默认情况下,@app.route 只处理 GET 请求。
2. methods 参数
methods 参数是一个列表,用于指定该路由可以处理的 HTTP 请求方法。常见的请求方法包括 GET、POST、PUT、DELETE 等。通过指定 methods 参数,你可以让同一个视图函数处理多种请求方法。
3. request.method
request.method 是 Flask 提供的全局对象 request 的一个属性,用于获取当前请求的 HTTP 方法。通过判断 request.method 的值,你可以在视图函数中根据不同的请求方法执行不同的逻辑。
4. 示例代码解析
@app.route('/example', methods=['GET', 'POST', 'PUT', 'DELETE']):定义了一个路由/example,并指定它可以处理GET、POST、PUT和DELETE请求。if request.method == 'GET'::判断当前请求是否为GET请求,如果是,则返回'This is a GET request'。- 类似地,代码中分别处理了
POST、PUT和DELETE请求,并返回相应的字符串。 - 如果请求方法不在
methods列表中,Flask 会自动返回405 Method Not Allowed错误。
通过这种方式,你可以灵活地处理不同的 HTTP 请求方法,并根据需要执行不同的逻辑。