【发布时间】:2020-03-14 16:39:30
【问题描述】:
我正在尝试为大多数 CRUD 操作设计一个 RESTful Web API。
我有一个设计难题,即如何为实体建模保存操作,该实体还可能具有可选的副作用,例如更新不属于原始实体的其他“子”实体。
例子:
- 模板实体
- 子文档实体
模板可以有多个子文档 如果更新了模板,则可以更新基于实体的所有或部分子级。
GET /templates/{id} -> Returns template
POST /templates/ -> Creates template
PUT /templates/ -> Updates template
现在,如果我们要更新模板,并且还要指示服务器根据模板更新所有文档,什么是好的设计?
1)
PUT /templates/
{
template: {
..
},
childDocumentsIds: [1, 3, 7...]
}
2)
PUT /templates?childDocumentIds=1,3,7
{
template
}
已经提出了类似的问题,但它们并没有完全回答我的问题:
- How to design REST API for non-CRUD "commands" like activate and deactivate of a resource?
- What RESTful HTTP request for executing actions on the server?
- How to Route non-CRUD actions in a RESTful ASP.NET Web API?
我试图判断其他人在设计 REST API 时是否有类似的问题。最近在体验了其中的一些之后,我认为我们可以比 REST API 做得更好。
【问题讨论】: