web server gateway interface:将http请求,响应格式封装起来,让我们可以专心的用python编写web业务。

WSGI接口定义的非常简单,它只要求开发者实现一个函数,就可以响应HTTP请求。

我们来看一个最简单的例子:

def application(environ,start_response):
start_response('200 OK',[('content-type', 'text/html')])
return [b'<h1>Hello,Web</h1>']

上述application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

  • environ:一个包含所有HTTP请求信息的dict对象。
  • start_response:一个发送HTTP响应的函数。

有了WSGI,我们就可以从environ这个dict对象中拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body。

不过,这个application函数由谁调用呢?它必须由WSGI服务器来调用。有很多符合WSGI规范的服务器,我们可以找一个来用。

python中内置了一个WSGI服务器,这个模块叫做wsgiref,它是用纯python编写的WSGI服务器的参考实现。

总结:

无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。

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

最新文章

  1. svn: E155004 is already locked 解决方案
  2. selenium-JS点击(项目应用)
  3. 「2014-2-26」Unicode vs. UTF-8 etc.
  4. 通过Nginx部署Django(基于ubuntu)
  5. noip2015-day1-t2
  6. 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数
  7. PowerMock 简介--转载
  8. html常用标签 第二节
  9. Codeforces 494B Obsessive String
  10. PHP文件相关函数试题
  11. CSS3 3D的总结(初学者易懂)
  12. [转] Webpack 打包优化之体积篇
  13. smarty插件
  14. Team抢救最后一下
  15. 7.18 进程池方式的 socket
  16. Constructing Roads----poj2421(最小生成树Kruskal)
  17. Java 问卷调查
  18. 【STSRM13】绵津见
  19. 查看osdmap命令
  20. 微信公众号授权登录,提示“redirect_uri 参数错误”

热门文章

  1. 安装 redis
  2. spring-boot序章:打造博客系统
  3. 基于 HTML5 + WebGL 的 3D 风力发电场
  4. mac-air上安装 rabbitmq 并简单使用
  5. 关于java php go 中AES加解密秘钥长度问题
  6. 【UEFI】---关于BIOS,EIST和PState&amp;CState和CPU主频变化得关系
  7. kafka模式对比
  8. NSCTF-Reverse02 超级详细且简单的办法搞定
  9. mybatis in查询
  10. 为什么在留言处插入&lt;script&gt;alert(1)&lt;/script&gt;不弹框