在HTTP协议中,请求URL有不同的方法(method),不同的请求方法有不同的应用场景,下面先来了解有哪些HTTP请求方法以及使用方法,如表3-2所示。
表3-2 HTTP请求方法及使用方法
表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所示。
图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所示。
图3-12 URL同时支持GET和POST
Flask从2.0版本开始,添加了5个快捷路由装饰器。如app.post表示定义的URL只接收POST请求。5个快捷路由装饰器如表3-3所示。
表3-3 快捷路由装饰器