Python:WSGI服务器之根据不同的请求路径返回不同的内容

import json
from wsgiref.simple_server import make_server

# demo_app 需要两个参数
# 第0个参数,表示请求路径相关的环境
# 第1个参数,用来返回响应头
# 这个函数需要一个返回值,返回值是一个列表
# 列表里只有一个元素,是一个二进制,表示返回给浏览器的数据
def demo_app(environ,start_response):
    # environ是一个字典,保存了很多的数据
    # PATH_INFO : 能够获取到用户的访问路径
    path = environ['PATH_INFO']
    #--------拓展---------------
    # 当在浏览器中键入(http://192.168.1.104:8090/login?name=zhangsan&age=17)时,如何在服务器端获取浏览器传来的ame=zhangsan&age=17参数?
    # 获取从客户端发来的GET请求
    # print(environ.get('QUERY_STRING')) # 写法一
    # print(environ['QUERY_STRING']) # 写法二
    # 获取从客户端传来的参数name=zhangsan&age=17 
    # --------拓展结束---------------  
     print(environ,open('../file/print_environ.txt','w',encoding = 'utf8'))
    status_code = '200 OK' # 默认状态码是 200
    if path == '/':
        response = '欢迎访问首页'
    elif path == '/login':
        response = json.dumps({
    
    "name":"zhangsan","age":17})
    elif path == '/register':
        with open('../file/test.txt','r',encoding='utf8') as file:
            response = file.read()
    else:
        status_code = '404 Not Found' # 如果页面没有配置,返回404
        response = '页面走丢了'

    start_response(status_code,[('Content-Type','text/html;charset=utf8')])
    return [response.encode('utf8')] # 浏览器显示的内容

if __name__=='__main__':
    # demo_app是一个函数,用来处理用户的请求
    httpd = make_server('',8090,demo_app)
    sa = httpd.socket.getsockname()
    print("Serving Http on", sa[0],"port", sa[1],"...")
    httpd.serve_forever()

    # 代码的作用是打开电脑的浏览器,并在浏览器里输入http://localhost:8080/xyz?abc
    # import webbrowser
    # webbrowser.open('http://localhost:8090/xyz?abc')

    # httpd.handle_request() # 处理一次请求
    httpd.serve_forever() # 服务器在后台一直运行

WSGI_根据不同的请求路径返回不同的内容
当在浏览器里访问
/时,浏览器返回:欢迎访问首页
/login时,浏览器返回:欢迎访问登陆页面
/register时,浏览器返回:欢迎访问注册页面

def demo_app(environ,start_response):
    path = environ['PATH_INFO']
    if path == '/':
        response = '欢迎访问首页'
    elif path == '/login':
        response = '欢迎访问登陆页面'
    elif path == '/register':
        response = '欢迎访问注册页面'
    else:
        status_code = '404 Not Found' # 如果页面没有配置,返回404
        response = '页面走丢了'

WSGI_向浏览器返回不同的内容
当在浏览器里访问
/时,浏览器返回:欢迎访问首页
/login时,浏览器返回:json字符串
/register时,浏览器返回:读取的文件内容
在这里插入图片描述
在这里插入图片描述

def demo_app(environ,start_response):
    path = environ['PATH_INFO']
    if path == '/':
        response = '欢迎访问首页'
    elif path == '/login':
        response = json.dumps({
    
    "name":"zhangsan","age":17})
    elif path == '/register':
        with open('../file/test.txt','r',encoding='utf8') as file:
            response = file.read()
    else:
        status_code = '404 Not Found' # 如果页面没有配置,返回404
        response = '页面走丢了'

猜你喜欢

转载自blog.csdn.net/weixin_42161670/article/details/114803988