Python: WSGI server returns different content according to different request paths

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_ returns different content according to different request paths.
When you visit
/ in the browser , the browser returns: Welcome to the homepage
/login, the browser returns: Welcome to the login page
/register, the browser returns: Welcome to register page

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_Return different content to the browser.
When you visit
/ in the browser , the browser returns: Welcome to the homepage
/login, the browser returns: json string
/register, the browser returns: the content of the read file
Insert picture description here
Insert picture description here

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 = '页面走丢了'

Guess you like

Origin blog.csdn.net/weixin_42161670/article/details/114803988