49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
"""第5-1课标准示例:模拟客户端、服务器和请求响应流程。"""
|
|
|
|
|
|
def browser_send_request(url: str) -> dict:
|
|
"""模拟浏览器根据URL创建HTTP请求。"""
|
|
|
|
return {
|
|
"method": "GET",
|
|
"url": url,
|
|
"headers": {"Accept": "text/html"},
|
|
}
|
|
|
|
|
|
def server_handle_request(request: dict) -> dict:
|
|
"""模拟服务器读取请求并返回HTTP响应。"""
|
|
|
|
if request["url"] == "/books":
|
|
return {
|
|
"status": 200,
|
|
"headers": {"Content-Type": "text/html; charset=utf-8"},
|
|
"body": "<h1>图书列表</h1>",
|
|
}
|
|
return {
|
|
"status": 404,
|
|
"headers": {"Content-Type": "text/plain; charset=utf-8"},
|
|
"body": "页面不存在",
|
|
}
|
|
|
|
|
|
def browser_render_response(response: dict) -> None:
|
|
"""模拟浏览器检查响应并展示响应体。"""
|
|
|
|
print(f"响应状态:{response['status']}")
|
|
print(f"内容类型:{response['headers']['Content-Type']}")
|
|
print(f"浏览器展示:{response['body']}")
|
|
|
|
|
|
def main() -> None:
|
|
"""依次模拟发送请求、服务器处理和浏览器展示。"""
|
|
|
|
request = browser_send_request("/books")
|
|
print(f"客户端发送:{request['method']} {request['url']}")
|
|
response = server_handle_request(request)
|
|
browser_render_response(response)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|