HTTP 请求方法
在 HTTP 协议中,请求 URL 有不同的方法(method),不同的请求方法有不同的应用场景,下面先来了解有哪些 HTTP 请求方法以及使用方法,如表 3-2 所示。

表 3-2 列举的 HTTP 请求方法,可以根据不同的场景选择不同的方法。如请求某个 URL 时,要获取数据,就用 GET 方法;要删除服务器数据,就用 DELETE 方法;要往服务器添加数据,就用 POST 方法。其他亦然。
在 Flask 项目中使用 app.route 装饰器定义 URL 时,默认用的是 GET 请求,而在浏览器中,在地址栏中输入一个 URL 并进行访问,默认也是 GET 请求,所以可以正常访问。如果想更改 URL 的请求方法,可以在定义 URL 时,给 app.route 设置 methods 参数,示例代码如下。
@app.route("/blog/add",methods=['POST'])
def blog_add():
return "使用POST方法添加博客"
通过以上代码可以看到,在 app.route 中通过给 methods 参数赋值一个列表,并且列表中只有一个 POST 参数,来限制 /blog/add 这个 URL 只能通过 POST 方法进行访问。如在浏览器中访问 /blog/add,会显示错误信息 “Method Not Allowed”,如图 3-11 所示。

如果需要一个 URL 既可以通过 GET 方法请求访问,也可以通过 POST 方法请求访问,那么可以给 methods 方法添加 GET 和 POST 参数,示例代码如下。
@app.route("/blog/add/post/get",methods=['POST','GET'])
def blog_add_post_get():
if request.method == 'GET':
return "使用GET方法添加博客"
else:
return "使用POST方法添加博客"
因为 /blog/add/post/get 同时支持 GET 和 POST 请求方法,所以在浏览器中访问 /blog/add/post/get 时也可以访问到页面,如图 3-12 所示。

Flask 从 2.0 版本开始,添加了 5 个快捷路由装饰器。如 app.post 表示定义的 URL 只接收 POST 请求。5 个快捷路由装饰器如表 3-3 所示。
