57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
# 第5-6课练习:HTTP接口调试与综合实践
|
||
#
|
||
# 本文件只提供题目、预期结果、自查清单和验收标准,不包含参考答案或代码骨架。
|
||
|
||
|
||
# 综合任务:设计并调试图书管理HTTP接口
|
||
#
|
||
# 第一部分:接口设计
|
||
# 1. 设计查询图书列表、查询详情、新增、局部修改和删除接口。
|
||
# 2. 列表接口支持keyword和page查询参数。
|
||
# 3. 为每个接口写出方法、路径、请求体、成功状态码和失败状态码。
|
||
# 4. 不需要连接数据库,可以使用内存列表保存本次运行的数据。
|
||
|
||
|
||
# 第二部分:服务端实现
|
||
# 1. 使用http.server实现GET /books和GET /books/{id}。
|
||
# 2. 实现POST /books,接收JSON格式的title与author。
|
||
# 3. 校验JSON格式和必填字段,返回合理的4xx状态码。
|
||
# 4. 创建成功返回201、图书JSON和Location响应头。
|
||
# 5. 未知路径返回404;服务器只绑定127.0.0.1和随机端口。
|
||
|
||
|
||
# 第三部分:客户端调试
|
||
# 1. 使用urllib.request依次调用列表、详情、新增和未知路径。
|
||
# 2. 输出请求方法、完整URL、状态码、Content-Type和响应体。
|
||
# 3. 额外发送一次无效JSON或缺少书名的请求,检查错误响应。
|
||
# 4. 使用try/finally保证测试完成或失败后都关闭服务器。
|
||
|
||
|
||
# 预期关键结果:
|
||
# 1. 初始列表至少包含一条图书;
|
||
# 2. 新增接口返回201和新图书编号;
|
||
# 3. 再次查询列表能够看到新增图书;
|
||
# 4. 查询不存在的编号返回404;
|
||
# 5. 缺少必填字段返回400或422;
|
||
# 6. 最终输出“本地服务已关闭”。
|
||
|
||
|
||
# 自查清单:
|
||
# 1. 服务是否只监听127.0.0.1,而不是暴露到局域网?
|
||
# 2. Content-Length是否按UTF-8字节长度计算?
|
||
# 3. JSON响应是否声明application/json与UTF-8?
|
||
# 4. 是否区分JSON语法错误、字段错误和资源不存在?
|
||
# 5. 客户端是否同时检查状态码、响应头和响应体?
|
||
# 6. 是否在finally中关闭服务并等待线程结束?
|
||
# 7. 是否能画出客户端、HTTP服务、业务数据之间的调用方向?
|
||
|
||
|
||
# 最终验收标准:
|
||
# 1. practice.py通过语法检查并能连续运行两次;
|
||
# 2. 完成至少两个GET接口和一个POST接口;
|
||
# 3. 新增后列表数据发生预期变化;
|
||
# 4. 成功与失败响应的状态码和JSON结构合理;
|
||
# 5. 不访问公网、不连接生产数据库、不长期占用固定端口;
|
||
# 6. 能使用接口调试工具复现同样请求;
|
||
# 7. 能解释这些接口迁移到FastAPI后哪些业务设计保持不变。
|