用wsgiref编写简单的服务端
wsgiref
是 Python 标准库中的一个模块,用于实现基本的 WSGI(Web Server Gateway Interface)服务器和中间件。WSGI 是 Python Web 应用程序与 Web 服务器之间的标准接口,它定义了一种通用的方式来传输 HTTP 请求和响应数据
代码演示
from wsgiref.simple_server import make_server
def application(request, response):
# 状态码和请求头属于固定格式不用管
status = '200 OK'
headers = [('Content-type', 'text/plain; charset=utf-8')]
response_body = '主界面'
response(status, headers)
return [response_body.encode('utf-8')]
# 创建 WSGI 服务器
server = make_server('localhost', 8000, application)
print('Serving on http://localhost:8000')
# 启动服务器
server.serve_forever()
如何做到在网址栏中输入什么后缀就返回什么后缀呢?
例如localhost:8000/login
,我想在输入login后缀后跳转到别的页面(返回内容)
首先要知道这块后缀归属于哪一个部分
我们先打印request参数:
def application(request, response):
print(request)
然后什么都别做,在客户端输入localhost:8000/login
内容有点多,我们直接Ctrl+F搜索login
而我们需要找的就是这个PATH_INFO
拿到这个参数后就简单了,直接上代码
from wsgiref.simple_server import make_server
def login():
return '登录界面'
def register():
return '注册界面'
# 创建一个字典用于存放所有需要的后缀名以及对应的函数
path_dict = {
'/login': login,
'/register': register,
}
def application(request, response):
# 获取后缀
path = request.get('PATH_INFO')
# 状态码和请求头属于固定格式不用管
status = '200 OK'
headers = [('Content-type', 'text/plain; charset=utf-8')]
# 如果后缀出现则执行对应的函数并返回
if path in path_dict:
data = path_dict[path]()
response_body = data
else:
response_body = '主界面'
response(status, headers)
return [response_body.encode('utf-8')]
# 创建 WSGI 服务器
server = make_server('localhost', 8000, application)
print('Serving on http://localhost:8000')
# 启动服务器
server.serve_forever()
, 8000, application)
print('Serving on http://localhost:8000')
# 启动服务器
server.serve_forever()