web应用下解耦合的思想

web应用下解耦合的思想

'''
耦合度较高的代码
'''
# wsgiref实现了server,即make_server
from wsgiref.simple_server import make_server


def app(environ, start_response):
    '''
    :param environ: 是一个字典,存放了http请求的信息
    :param start_response: 是一个功能,用于返回http协议的响应首行和响应头信息
    :return: 当接收到请求时,wsgiref模块会对该请求加以处理,然后再调用app函数,自动传入两个参数
    '''
    # 返回http协议的响应首行和响应头信息
    start_response('200 OK', [('Content-Type', 'text/html')])
    # 处理业务逻辑,根据请求url的不同返回不同的页面内容
    if environ.get('PATH_INFO') == '/index':
        with open('index.html', 'r', encoding='utf-8')as f:
            data = f.read()
    elif environ.get('PATH_INFO') == '/timer':
        with open('timer.html', 'r', encoding='utf-8')as f:
            data = f.read()
        import time
        now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        data = data.replace('{{time}}', now)
    else:
        data = '<h1>Hello, Web!</h1>'
    # 返回http响应体信息,必须是bytes类型,必须放在列表里
    return [data.encode('utf-8')]


if __name__ == '__main__':
    s = make_server('', 8011, app)
    print('监听8011')
    s.serve_forever()
  
'''
解耦
'''
from wsgiref.simple_server import make_server

'''
处理业务的逻辑函数
'''
def index(environ):
    with open('index.html', 'r', encoding='utf-8') as f:
        data = f.read()
    return data.encode('utf-8')


def timer(environ):
    with open('timer.html', 'r', encoding='utf-8') as f:
        data = f.read()
    import datetime
    now = datetime.datetime.now().strftime('%y-%m-%d %X')
    data.replace('{{time}}', now)
    return data.encode('utf-8')


# 路径与函数映射
url_patterns = [
    ('/index', index),
    ('/timer', timer),
]


def app(environ, start_response):
    '''
    :param environ: 是一个字典,存放了http请求的信息
    :param start_response: 是一个功能,用于返回http协议的响应首行和响应头信息
    :return: 当接收到请求时,wsgiref模块会对该请求加以处理,然后再调用app函数,自动传入两个参数
    '''
    # 返回http协议的响应首行和响应头信息
    start_response('200 OK', [('Content-Type', 'text/html')])
    request_url = environ.get('PATH_INFO')
    for url in url_patterns:
        if url[0] == request_url:
            data = url[1](environ)
            break
    else:
        data = b'404'
    # 返回http响应体信息,必须是bytes类型,必须放在列表里
    return [data]


if __name__ == '__main__':
    s = make_server('', 8011, app)
    print('监听8011')
    s.serve_forever()

详情代码git地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值