WSGI
一个Web应用的本质就是:
-
浏览器发送一个HTTP请求;
-
服务器收到请求,生成一个HTML文档;
-
服务器把HTML文档作为HTTP响应的Body发送给浏览器;
-
浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。
如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,首先得花个把月去读HTTP规范。
正确的做法是底层代码由专门的服务器软件实现,我们专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心编写Web业务。
这个接口就是WSGI:Web Server Gateway Interface。
接口对应的实现函数应包括两个参数:
-
environ:一个包含所有HTTP请求信息的
dict
对象; -
start_response:一个发送HTTP响应的函数。
例子:
其中 start_response发送两个参数:1、字符串:http状态码;2、列表:由HTTP Header组成的元组列表
最后返回为body正文内容。
用python内置的wsgi服务器运行:
Werkzeug
参考 http://werkzeug.pocoo.org/docs/0.14/tutorial/#step-3-the-environment
其url和视图被flask框架进行封装,将在flask框架中进行学习。