详解WSGI

wsgi全称是"Web Server Gateway Interfacfe",web服务器网关接口,wsgi在python2.5中加入,是web服务器和web应用的标准接口,任何实现了该接口的web服务器和web应用都能无缝协作。来看一个形象点的图:

详解WSGI_第1张图片

  如上图所示(图片来自这里),wsgi一端连接web服务器(http服务器),另一端连接应用。目前已经有很多的web框架,如flask、webpy,用户只要简单配置一些路由信息,就能开发出一个web应用。后文中的web框架就等同于应用(application)

一、什么是wsgi

(1)、RESTful只是设计风格而不是标准,而WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。

(2)、WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。

(3)、Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。

(4)、Web应用的本质:

       1)、浏览器发送HTTP请求                  2)、服务器接收到请求,生成HTML文档

       3)、服务器把HTML文档作为HTTP响应的Body发送给浏览器

       4)、浏览器收到HTTP响应,从HTTP Body取出HTML文档进行显示

接受HTTP请求、解析HTTP请求、发送HTTP响应都是重复的苦力活,如果我们自己来写这些底层代码,还没开始写HTML,先要花半把个月研读HTTP规范。所以底层的代码应该由专门的服务器软件实现,我们用python专注于生成HTML文档。

因为我们不想要接触TCP连接、HTTP原始请求和响应格式。所以需要一个统一的接口,专心用python编写Web业务。

这个接口就是 WSGI:(Web 服务器网关接口)。

二、WSGI接口

你可能感兴趣的:(详解WSGI)