"""第5-2课标准示例:解析URL并构造HTTP请求信息。""" from urllib.parse import parse_qs, urlencode, urlsplit def parse_url(url: str) -> None: """拆分URL,并把查询字符串转换成便于使用的字典。""" parts = urlsplit(url) query_parameters = parse_qs(parts.query) print(f"协议:{parts.scheme}") print(f"主机:{parts.hostname}") print(f"端口:{parts.port}") print(f"路径:{parts.path}") print(f"查询参数:{query_parameters}") def build_request_target(path: str, parameters: dict) -> str: """把路径和查询参数编码成请求目标。""" return f"{path}?{urlencode(parameters)}" def main() -> None: """展示URL各部分以及一份简化的GET请求。""" url = "https://api.example.com:443/books?keyword=Python&page=2" parse_url(url) request_target = build_request_target( "/books", {"keyword": "Python Web", "page": 1}, ) print(f"请求行:GET {request_target} HTTP/1.1") print("请求头:Accept: application/json") if __name__ == "__main__": main()