购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 HTTP请求方法

在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 快捷路由装饰器 KQfMqAD6tCV0dKQ8XL6Ka1WtK2cqDkwhDFR+ddiRx8O28nKzLVyyRh17I2nvkV0f

点击中间区域
呼出菜单
上一章
目录
下一章
×