python的web服务器_flask入门之http方法,debug推荐restclient

http有许多不同的访问URL的方法。缺省情况下,路由只回应GET请求。但是通过route()函数装饰器传递methonds参数可以改变这个行为。

HTTP方法告知服务器,客户端想对请求的页面做些什么。

GET 浏览器告知服务器,只获取页面上的信息,并发送给我。这是最常用的方法。

HEAD 欲获取信息,但是只关心消息头。网站应该像处理GET请求一样来处理它,但是不分发实际内容。

POST 客户端想在URL上发布新信息。并且服务器必须确保数据已存储,而且只存储一次。

PUT 类似POST,但是服务器可能存储多次,覆盖旧值。这主要是考虑POST可能丢失。

DELETE 删除给定位置的信息

OPTIONS 给客户端提供一个敏捷的途径来弄清楚这个URL支持那些HTTP方法。

一般HTML4中表单只能用GET和POST方法提交到服务器。

这里举个例子吧。

注意,你需要从flask中import request类。因此需要在起始处添加代码 from flask import request

当用网页打开对应的网址时,由于默认时GET方法,所以显示如下:

接下来,我使用了firefox的restclient插件,构造了一个在上述url上的一个post方法,最终显示结果如下:

这里可以看到,最终返回的结果是,you are POSTING.

在web应用中,客户端发送给服务器的数据至关重要。在Flask中由全局的request对象来提供这些信息。既然request是全局的,那它是如何保证线程安全的呢?

答案是全局对象request做了特定环境的局部对象的代理。简而言之,就是request对象分时复用。一个请求传入时,web服务器会决定生成一个新的线程,当flask开始处理这个请求时,它可以确定当前线程时active的,于是request就被赋值成这个线程的请求数据。当这个请求处理完毕后,一旦有新的线程进来,request又要绑定到新的线程。

更详细的信息请查阅request文档(#flask.request)

顺便提一下,restclient在debug一个GET之外的http方法时非常好用,它可以在任何URL上构造任何方法。