我目前有一些通知终点:
创建/更新:
POST /notifications
和参数:SimpleNotif
pojo获取通知(列表):
POST /notifications/query
和参数:NotifFilter
pojo获取通知:
GET /notifications/{id}
和参数:id
简单的notif删除Notif:
DELETE /notifications/{id}
,并再次添加params:id
NotifFilter
pojo具有sortBy
,offset
,limit
等字段。现在,通知具有两种类型:简单通知和复合通知(又称为摘要)。以上其余端点用于简单通知。
POJO SimpleNotif
和SummaryNotif
也共享许多属性。摘要通知将具有所有相同的属性(例如名称,频率等)以及简单通知列表。摘要通知可以基于某些规则触发,例如一个通知更改或多个更改等的严重性。
如何为摘要通知处理CRUD的其余端点设计?
/notifications/summary
将与
冲突/notifications/{id}.
现有端点采用过滤器对象进行过滤,我应该在此处引入类型吗?我认为引入一个全新的休息终点并不可取,因为我们已经有了一个通知终点。有什么建议如何处理SummaryNotif的CRUD?
侧面说明:使用POST列出信息(实际上是GET)的原因是浏览器中的URL长度限制。
答案 0 :(得分:1)
现有端点采用一个过滤对象进行过滤,如果我 在那介绍类型?
是的,这对于您当前的实现是有意义的,因为考虑到SummaryNotif
只是一种通知。因此,将来,如果您引入其他类型,就不能仅为其添加另一个端点。
执行此操作的另一种方法是 引入查询参数 ?type=summary
(也因为您正在执行GET
名称为f {POST
),但是由于您已经具有可查询的终结点,因此应在请求对象中将其与其他参数一起使用。
另一个设计建议是,您可以使用esp在Notification
和SummaryNotif
中创建一个父对象(例如SimpleNotif
)。它们共有的属性,您的基本CRUD仍然可能像这样:
Create/Update: POST /notifications and params: Accept a Notification object (subtyping helps here)
Get Notifs (listing): POST /notifications/query and params: updated NotifFilter pojo
Get Notif: GET /notifications/{id} and params: id
Delete Notif: DELETE /notifications/{id} and params: id