Files

39 lines
1.1 KiB
Python

"""第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()