Python使用装饰器给Web框架添加路由功能

一、观察以下代码

以下来自 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个分支。

二、通过字典来实现请求与处理函数之间的映射

猜你喜欢

转载自www.cnblogs.com/leokale-zz/p/11984375.html