我对执行静态更新的标准方法有疑问。
我们有一个安静的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
。
显然这两种方法都有效但我无法找到服务/回购更新是否有最佳实践。
你有什么建议?
谢谢!
答案 0 :(得分:0)
没有冒着宗教争论的风险......
严格地说,从一个宁静的API角度来看,PUT用于更新您拥有id的资源。在这个意义上,你的API接口很好。在您的服务层,我很想使用Update(Job job)
签名,因为这可以重新用于您的POST操作。
答案 1 :(得分:0)
您当前的实施是正确的。特别是,因为如果你要删除jobUid
参数,你最终会得到终点put /jobs
这可能会误认为是一个更新多个作业而不是单个作业的终点。 / p>