我在工作中遇到了一个问题,我无法找到有关在RESTful Web服务中针对主键是其他资源ID的组合的资源执行CRUD操作的通常标准或实践的信息.我们使用MVC WebApi来创建控制器.例如,我们有三个表:
Product
:PK = ProductIdPart
:PK = PartIdProductPartAssoc
:PK =(ProductId,PartId)产品可以包含许多部件,而部件可以是许多产品的组件.关联表还包含与关联本身相关的其他信息,而不是可编辑的信息.
我们有ProductsController
和PartsController
类使用定义为的路由模板处理通常的GET/PUT/POST/DELETE操作:{controller}/{id}/{action}
以便以下IRI工作:
/api/Products
- 返回所有产品,创建新产品/api/Products/1
- 检索/更新/删除产品1/api/Parts
- 返回所有部件,创建一个新部件/api/Parts/2
- 检索/更新/删除第2部分/api/Products/1/Parts
- 获取产品1的所有部件/api/Parts/2/Products
- 获取第2部分为组件的所有产品我遇到问题的方法是如何为ProductPartAssoc资源定义路径模板.获取关联数据的路由模板和IRI应该是什么样的?坚持惯例,我希望如下:
/api/ProductPartAssoc
- 返回所有关联,创建关联/api/ProductPartAssoc/[1,2]
- 检索/更新/删除产品1和第2部分之间的关联我的同事发现这在美学上令人不悦,并且似乎认为最好不要有一个ProductPartAssocController
类,而是添加其他方法ProductsController
来管理关联数据:
/api/Products/1/Parts/2
- 获取产品1和第2部分之间关联的数据,而不是第2部分作为第1部分成员的数据,这通常是基于其他示例的情况,例如/Book/5/Chapter/3
我在其他地方看到的情况.在一天结束时,我想我要求的是验证,或者我可以指出的方向,并说"看,这是其他人做的."
处理复合键识别的资源的典型做法是什么?
rest composite-key asp.net-web-api attributerouting asp.net-web-api-routing