一、观察以下代码
以下来自 Python实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦) 中的mini_frame最后版本的代码:
import time def index(): with open("templates/index.html", 'rb') as f: content = f.read() return content.decode("utf-8") def login(): return "----login page----\r\n %s" % time.ctime() def register(): return "----register page----\r\n %s" % time.ctime() def application(env, start_response): file_name = env['PATH_INFO'] if file_name == '/login.py': start_response('200 OK', [('Content-Tpye', 'text/html')]) return login() elif file_name == '/register.py': start_response('200 OK', [('Content-Tpye', 'text/html')]) return register() elif file_name == '/index.py': start_response('200 OK', [('Content-Tpye', 'text/html')]) return index() else: start_response('404 NOT FOUND', []) return "Not found page..."
我们可以看到,在前面的代码实现中,application函数中通过if...else判断来对用户的请求做判断,然后决定调用什么函数来进行处理。这是不合理的,如果支持100个请求,那么这样就需要些100个分支。
二、通过字典来实现请求与处理函数之间的映射