Restful api中关于同一个资源多种创建方式的API设计
来源:4-2 【理解】RESTful的6个约束与最佳实践

追风筝的人00
2021-11-24
老师你好,现在我有一个这样的问题
项目中有一个需求是创建一个资源,但是它有多种创建方式,在这个Controller中,Post方法的签名都一样,这样好像是不行的,在这种情况下Restful怎么设计呢
// 方式1
[HttpPost]
public async Task<IActionResult> AddEquipment(long producerId, long productId, [FromBody] EquipmentVm2 vm)
// 方式2
[HttpPost]
public async Task<IActionResult> AddEquipment(long producerId, long productId, [FromBody]EquipmentVm vm)
这种情况应该怎么设计呢
写回答
1回答
-
阿莱克斯刘
2021-11-27
不光是controller,任何一个类都不可以定义签名重复的方法。但是你的两个方法的签名是不一样的,第一个AddEquipment方法的第三个参数是EquipmentVm2;而第二个AddEquipment方法的第三个参数是EquipmentVm。所以这是两个不一样的方法。
你的问题出在[HttpPost]这个特性上,一个controller不能有两个路径一样、请求方法一样的api。
所以,你可以把第一个AddEquipment声明为[HttpPost],而第二个AddEquipment声明为[HttpPost("add2")]
那么你的api就会产生两条:
POST api/equipment POST api/equipment/add2
当然,这种命名方式不符合REST。
00
相似问题
关于资源过滤器的疑问
回答 1
老师请问开发自己的接口平台有什么建议
回答 1