WSGI协议解析
2024-09-08 09:05:51
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协议进一步封装的,把收、发请求响应的过程实现了,对于开发者来说只需要关注自己的业务实现即可。
最新文章
- Codeforces Round #366 (Div. 2) ABC
- Python 操作FTP
- Unity Standard Assets 简介之 2D
- 线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理
- Spring摘记
- 最快的方法来清除Chrome浏览器DNS高速缓存
- CodeForces 698B Fix a Tree (并查集应用)
- 项目架构开发:数据访问层之Repository
- SSM框架mapper.xml模糊查询语句
- CMake 常用方法
- 如何保障Web应用安全性
- three.js 第一篇:准备工作
- 移动端过禁止输入emoji表情实现方案
- springboot JPA
- vue使用render渲染&;jsx
- 请教 JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态
- kubeadm init 卡在 Created API client, waiting for the control plane to become ready
- spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。
- 应用多种变形CSS3
- November 6th 2016 Week 46th Sunday
热门文章
- Snapdragon connect to android devices
- Java反射学习总结五(Annotation(注解)-基础篇)
- Android学习(十) SQLite 基于SQL语句的操作方式
- react-native 创建 ios 项目
- JavaScript 判断浏览器及版本
- Android SDK Manager 下载SDK失败的解决办法
- 防火墙firewall的设置和查看
- sublime 插件篇
- Maven环境下搭建SSH框架之Spring整合Struts2
- Atitit.rust语言特性 attilax 总结