50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
# 第5-5课练习:RESTful API设计
|
|
#
|
|
# 本文件只提供题目、预期结果、自查清单和验收标准,不包含参考答案或代码骨架。
|
|
|
|
|
|
# 练习一:设计作者资源接口
|
|
# 1. 设计查询作者列表、查询一个作者、新增作者、修改作者和删除作者的接口。
|
|
# 2. 每个接口写明HTTP方法、路径、成功状态码和用途。
|
|
# 3. 列表接口增加name查询参数和分页参数。
|
|
# 4. 详情接口使用author_id作为路径参数。
|
|
|
|
|
|
# 练习二:设计订单业务接口
|
|
# 1. 设计查询订单列表、查询订单详情和创建订单的接口。
|
|
# 2. 为“取消订单”设计一个能清楚表达业务动作的接口。
|
|
# 3. 分别考虑成功、订单不存在、订单状态不允许取消和请求字段错误。
|
|
# 4. 为上述结果选择合适的状态码,并用注释解释选择原因。
|
|
|
|
|
|
# 练习三:检查不推荐的接口
|
|
# 分析以下路径的问题,并写出更清晰的设计:
|
|
# 1. GET /getAllBooks
|
|
# 2. POST /createBook
|
|
# 3. POST /deleteBook?id=10
|
|
# 4. GET /books/delete/10
|
|
|
|
|
|
# 预期关键结果:
|
|
# 1. 资源路径以名词为主,操作意图主要由HTTP方法表达;
|
|
# 2. 列表和详情具有不同路径;
|
|
# 3. 查询条件使用查询参数,资源编号使用路径参数;
|
|
# 4. 成功与失败结果都有明确状态码。
|
|
|
|
|
|
# 自查清单:
|
|
# 1. 路径是否围绕资源设计,而不是堆叠动词?
|
|
# 2. 同一类资源的路径命名是否一致?
|
|
# 3. HTTP方法是否符合读取、创建、修改和删除的意图?
|
|
# 4. 是否区分路径参数、查询参数和JSON请求体?
|
|
# 5. 是否为创建操作选择201,为无响应体删除选择204?
|
|
# 6. 是否考虑400、404、409和422等失败状态?
|
|
|
|
|
|
# 最终验收标准:
|
|
# 1. practice.py保留为题目文件,不写入参考答案;
|
|
# 2. 作者资源至少包含五个接口;
|
|
# 3. 订单接口能表达查询、创建和取消;
|
|
# 4. 能解释四个不推荐接口的问题;
|
|
# 5. 能用一句话说明RESTful是设计风格,不是某个Python框架。
|