WSGI协议

Posted 庆长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSGI协议相关的知识,希望对你有一定的参考价值。

WSGI协议:(Web Server Gateway Interface,Web 服务器网关接口)
    WSGI是Python语言中所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。
    WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。
    Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。
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接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。
def application(environ, start_response):
start_response(\'200 OK\', [(\'Content-Type\', \'text/html;charset=utf-8\')]) # charset=utf-8:中文编码
return \'Hello World!\'
上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
  • environ:一个包含所有HTTP请求信息的dict对象,服务器给框架传数据
  • start_response:一个发送HTTP响应的函数,框架给服务器传响应头相关信息
  • start_response(\'200 OK\', [(\'Content-Type\', \'text/html\')]): 表示响应Body的内容形式 
  • start_response()函数接收两个参数:一个是HTTP响应码,一个是一组列表list表示的HTTP Header,每个Header用一个包含两个str的tuple表示。(响应头里的参数可以自己填写添加)
从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body(HTTP响应格式)。
 
浏览器通过WSGI请求动态资源的过程
    1.httpweb发送请求动态资源给服务器
    2.webWSGI服务器收到请求后通过调用一个属性给(应用程序框架)
    3.WSGIweb(应用程序框架)通过引用调用服务器的方法,设置返回的状态和头信息
    4.web调用后返回,此时服务器保存了刚刚设置的信息
    5.body(应用程序框架)查询数据库,生成动态页面的信息
    6.bodyweb把生成的信息返回给服务器
    7.web服务器把数据返回给浏览器

以上是关于WSGI协议的主要内容,如果未能解决你的问题,请参考以下文章

wsgi 协议

WSGI协议

浅析WSGI协议

Python Web开发 - WSGI & uWSGI协议

WSGI协议

Python-WSGI协议如何实现?