feat(web基础): 新增零基础Web开发课程

This commit is contained in:
zhiye.sun
2026-08-20 16:14:29 +08:00
parent bf1f7042a9
commit 0c3d6402ea
19 changed files with 2005 additions and 8 deletions
@@ -0,0 +1,56 @@
# 第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后哪些业务设计保持不变。