mini-Web业务逻辑及其实现
为什么需要WSGI?
当服务器收到浏览器请求后, 需要判断请求的是静态资源还是动态资源。如果是静态,则直接返回静态页面给浏览器;如果是动态,则需要处理数据后返回给浏览器。由于要保证服务器长期稳定运行,通常处理数据的这部分功能需要独立出来,因此会用到应用程序框架。
另外,为了不同web服务器和不同web框架之间的通配性以及可移植性,因此需要遵循WSGI(Web Server Gateway Interface,服务器网关接口)。 WSGI没有官方的实现,因为WSGI更像一个协议,遵循该协议的WSGI应用都可以在任何服务器上运行。
定义WSGI接口
我们只需要在web框架中定义一个符合WSGI标准的HTTP处理函数,即可响应HTTP请求。
1 | def application(environ, start_response): |
application()函数接收两个参数
- environ: 一个字典对象, 包含所有HTTP请求信息
- start_response: 一个函数的应用,用来发送HTTP响应头信息
application()函数必须有返回值,返回响应body信息。
application()函数由WSGI服务器调用,参数亦在服务器中传入, 所有的HTTP解析、响应头和响应体信息的拼接都在服务器中完成,在框架中我们只需要完成应用程序的逻辑部分即可。
server端
web_server.py
1 | import socket |
框架端
1 | import re |