【发布时间】:2019-09-05 22:43:52
【问题描述】:
我想创建一个 REST API,其中包含类别中的项目,并列出所有类别及其项目数量。
架构:
Category {id, name}
Item {id, name, categoryId}
端点:
GET /categories/list
GET /categories/<id>
PUT /categories/<id>
GET /items/list[?category=<categoryId>]
GET /items/<id>
要更新我从GET /categories/<id> 获得的内容,修改JSON 对象并返回PUT。
到目前为止一切顺利。
我的问题是是否有一种或多种最佳做法来检索项目计数? 我可以想到几种方法来做到这一点:
- 为每个类别触发一个
GET /items/list?category=<categoryId>,计算结果项。
从X-total-count或content range标头或从端点返回的total_count字段中获取计数将避免必须实际加载所有项目。 - 将
item_count字段添加到生成的JSON 类别对象中。
对于PUTs,应该如何处理这个只读字段?让后端忽略它?手动取消设置? - 创建一个专用端点
/categories/item_counts,它返回一个包含每个项目数的类别列表。
我喜欢选项 2(例如 the wordpress API does it this way),因为它不需要额外的请求。但我真的不喜欢为 GET 和 PUT 请求使用不同的对象结构的想法。
【问题讨论】: