WSGI协议中包含两个角色:服务器方和应用程序:

  • 服务器方:其调用应用程序,给应用程序提供(环境信息)和(回调函数), 这个回调函数是用来将应用程序设置的http header和status等信息传递给服务器方。

  • 应用程序:请求的统一入口,所有的请求都进入到这个app中来处理,这个app说白了就是一个函数(类中的call是一样的道理)。用来生成返回的header,body和status,以便返回给服务器方。

一个符合WSGI的“Hello World”应用程序如下所示:

def Application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield "Hello world!\n"

定义了一个名为Application的应用程序,environ和startresponse,environ是一个字典包含了CGI中的环境变量,startresponse也是一个callable,接受两个必须的参数,status(HTTP状态)和responseheaders(响应消息的头)。 第二行调用了startresponse,状态指定为“200 OK”,消息头指定为内容类型是“text/plain” 第三行将响应消息的消息体返回。

基于这种协议,实现服务器方和应用程序就可以开发一个web框架。目前比较常用的web框架:Django、Flask、Tornado都是实现了基于WSGI协议进一步封装的,把收、发请求响应的过程实现了,对于开发者来说只需要关注自己的业务实现即可。

最新文章

  1. Codeforces Round #366 (Div. 2) ABC
  2. Python 操作FTP
  3. Unity Standard Assets 简介之 2D
  4. 线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理
  5. Spring摘记
  6. 最快的方法来清除Chrome浏览器DNS高速缓存
  7. CodeForces 698B Fix a Tree (并查集应用)
  8. 项目架构开发:数据访问层之Repository
  9. SSM框架mapper.xml模糊查询语句
  10. CMake 常用方法
  11. 如何保障Web应用安全性
  12. three.js 第一篇:准备工作
  13. 移动端过禁止输入emoji表情实现方案
  14. springboot JPA
  15. vue使用render渲染&jsx
  16. 请教 JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态
  17. kubeadm init 卡在 Created API client, waiting for the control plane to become ready
  18. spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。
  19. 应用多种变形CSS3
  20. November 6th 2016 Week 46th Sunday

热门文章

  1. Snapdragon connect to android devices
  2. Java反射学习总结五(Annotation(注解)-基础篇)
  3. Android学习(十) SQLite 基于SQL语句的操作方式
  4. react-native 创建 ios 项目
  5. JavaScript 判断浏览器及版本
  6. Android SDK Manager 下载SDK失败的解决办法
  7. 防火墙firewall的设置和查看
  8. sublime 插件篇
  9. Maven环境下搭建SSH框架之Spring整合Struts2
  10. Atitit.rust语言特性 attilax 总结