RESTful API设计:检索类别中的项目数
我想创建一个RESTAPI,其中包含类别中的项目,并列出所有类别及其项目数 模式:RESTful API设计:检索类别中的项目数,rest,api,Rest,Api,我想创建一个RESTAPI,其中包含类别中的项目,并列出所有类别及其项目数 模式: Category {id, name} Item {id, name, categoryId} GET /categories/list GET /categories/<id> PUT /categories/<id> GET /items/list[?category=<categoryId>] GET /items/<id>
Category {id, name}
Item {id, name, categoryId}
GET /categories/list
GET /categories/<id>
PUT /categories/<id>
GET /items/list[?category=<categoryId>]
GET /items/<id>
端点:
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/list
获取/分类/
放置/分类/
获取/项目/列表[?类别=]
获取/获取项目/
要更新一个类别,我需要从get/categories/
中获取的内容,修改JSON对象并将其放回原处
到目前为止还不错
我的问题是,是否有一个或多个最佳实践来检索项目计数?
我可以想出一些方法来做到这一点:
为每个类别触发一个GET/items/list?category=
,计算结果项。
从端点返回的X-total-count
或内容范围
标题或total\u count
字段中获取计数将避免实际加载所有项目
将item\u count
字段添加到生成的类别JSON对象中。
对于PUT
s,应如何处理此只读字段?让后端忽略它?手动取消设置它
创建一个专用端点/categories/item_counts
,该端点返回每个项目数的类别列表
我喜欢选项2(例如),因为它不需要额外的请求。但是我真的不喜欢为GET
和PUT
请求使用不同的对象结构。REST实际上是关于对象的表示<代码>类别
没有计数,因为它是单个对象<代码>项也没有计数,原因相同。Count更像是RPC,在这里您告诉服务计算一些东西
GET /items/list[?category=<categoryId>]
虽然我会使用路径参数来代替:
GET /items/list/<category_id>/count
它有点偏离了“纯”REST,但它保持了实际REST对象的干净,正如您所说,保持了total\u count
我们的类别
对象
我假设您有时需要计数,但不是所有的项
s,否则您不需要向API请求计数,您只需要在客户机中自己计数即可。这意味着另一种选择:
GET /categories/<id>/count
{
"total_count": 10
}
GET/categories//count
{
“总计数”:10
}
哪一个更适合于找出一个类别中有多少项的用例