08-04 检查请求结构
题目
增加含空格、中文与 & 的查询值,核对服务器解析出的字段;再发送 JSON 请求体,比较查询和正文的来源。
推导与做法
查询参数交给 params 编码,空格、中文和 & 都属于 q 的值,不应手工拼接成另一段查询。服务器按 URL 的查询规则解码后,应恢复原字符串。
JSON 则放在请求正文,并由 Content-Type: application/json 说明解释方式。演示同时显示编码后的 URL、解码后的 query、请求头和正文,比较它们的来源。
实现与运行
查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。
在配套目录的 并发异步与HTTP/network_project 中运行。先按项目 README 执行 uv sync --locked。
# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run python "../../学习索引/参考实现/代码/ch08.py" 08-04
程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。
查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
"url": "https://practice.invalid/books?q=Python+%E5%85%A5%E9%97%A8+%26+API",
"query": {
"q": [
"Python 入门 & API"
]
},
"content_type": "application/json",
"body": "{\"title\":\"Python 入门 & API\"}"
}