Webapi - 服务/存储层上的.Net restful put / update参数约定

时间:2015-01-18 05:55:52

标签: c# .net rest service asp.net-web-api

我对执行静态更新的标准方法有疑问。

我们有一个安静的Api,其更新网址如下:

put /jobs/{jobUid:guid}

restful controller中的签名是:

UpdateJob(Guid jobUid, [FromBody] UpdateJobOperation job)

我们的UpdateJobOperation类具有与Job类完全相同的属性,但Id(Guid)不在UpdateJobOperation类中。

在此更新方法中,我们将UpdateJobOperation映射到我们的Job业务对象,然后我们在服务层上调用update并传入作业。作业对象上有一个Guid Id属性。所以我的问题如下:

我们在服务层上的更新签名和我们对存储库层的更新(服务将执行业务逻辑然后调用存储库上的更新)应该是这样的:

UpdateJob(Job job)

OR

UpdateJob(Guid jobUid, Job job)

如果我们使用单个Job参数,显然我们需要在JobUid上设置Job属性,然后再在服务上调用UpdateJob

显然这两种方法都有效但我无法找到服务/回购更新是否有最佳实践。

你有什么建议?

谢谢!

2 个答案:

答案 0 :(得分:0)

没有冒着宗教争论的风险......

严格地说,从一个宁静的API角度来看,PUT用于更新您拥有id的资源。在这个意义上,你的API接口很好。在您的服务层,我很想使用Update(Job job)签名,因为这可以重新用于您的POST操作。

答案 1 :(得分:0)

您当前的实施是正确的。特别是,因为如果你要删除jobUid参数,你最终会得到终点put /jobs这可能会误认为是一个更新多个作业而不是单个作业的终点。 / p>