基于wsgiref模块
关键词:wsgiref、run方法调用
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/9/24 22:10
# @Author : 小梁同学@0311
# @File : 基于wsgiref模块.py
# @Software: PyCharm
from wsgiref.simple_server import make_server
def run(env, response):
"""
:param env: 请求相关的所有数据
:param response: 响应相关的所有数据
:return: 返回给浏览器的数据
"""
response('200 OK', []) # 响应首行 响应头
print(env) # 大字典 wsgiref模块帮你处理好http格式的数据 封装成了字典让你更加方便的操作
# 从env中取 env里面有个 PATH_INFO的键,这个是记录用户输入访问的路径后缀
current_path = env.get('PATH_INFO')
# return [b'hello wsgiref']
if current_path == '/index':
return [b'index']
elif current_path == '/login':
return [b'login']
else:
return [b'404 error']
if __name__ == '__main__':
server = make_server('127.0.0.1', 8080, run) # 可以放函数 也可以放对象,注意都不要在这加括号
'''
会实时监听127.0.0.1:8080地址
只要有客户端来了都会交给run函数处理,并且自动加括号() 触发函数体的运行
对象+() 触发产生对象类里面的__call__方法
flask启动源码
make_server('127.0.0.1', 8080, obj)
__call__
'''
server.serve_forever() # 启动服务端
'''
总结:
1、没有一行socket代码书写
2、处理http协议的代码也不用写
3、直接专注于获取数据 然后书写业务逻辑
不足:
不同url路径,对应功能有些越多,且越来越长
'''