wsgi笔记

了解了HTTP协议和HTML文档,咱们其实就明白了一个Web应用的本质就是:浏览器

  1. 浏览器发送一个HTTP请求;
  2. 服务器收到请求,生成一个HTML文档;
  3. 服务器把HTML文档做为HTTP响应的Body发送给浏览器;
  4. 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。

 

由于咱们不但愿接触到TCP链接、HTTP原始请求和响应格式,因此,须要一个统一的接口,让咱们专心用Python编写Web业务。服务器

 

这个接口就是WSGI:Web Server Gateway Interface。app

 

WSGI接口定义很是简单,它只要求Web开发者实现一个函数,就能够响应HTTP请求。框架

 

有了WSGI,咱们关心的就是如何从environ这个dict对象拿到HTTP请求信息,而后构造HTML,经过start_response()发送Header,最后返回Body。函数

 

不过,等等,这个application()函数怎么调用?若是咱们本身调用,两个参数environ和start_response咱们无法提供,返回的str也无法发给浏览器。测试

 

因此application()函数必须由WSGI服务器来调用。有不少符合WSGI规范的服务器,咱们能够挑选一个来用。可是如今,咱们只想尽快测试一下咱们编写的application()函数真的能够把HTML输出到浏览器,因此,要赶忙找一个最简单的WSGI服务器,把咱们的Web应用程序跑起来。对象

 

好消息是Python内置了一个WSGI服务器,这个模块叫 wsgiref ,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现彻底符合WSGI标准,可是不考虑任何运行效率,仅供开发和测试使用。接口

 

 

不管多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的全部输入信息均可以经过environ得到,HTTP响应的输出均可以经过start_response()加上函数返回值做为Body。开发

 

复杂的Web应用程序,光靠一个WSGI函数来处理仍是太底层了,咱们须要在WSGI之上再抽象出Web框架,进一步简化Web开发。文档

 

其实一个Web App,就是写一个WSGI的处理函数,针对每一个HTTP请求进行响应。

 

固然了,由于开发Python的Web框架也不是什么难事,咱们后面也会本身开发一个Web框架。

相关文章
相关标签/搜索