【发布时间】:2019-09-16 12:02:37
【问题描述】:
我想知道在 WebApi .Net Core 中设计多个资源更新的最佳方式是什么。
例如,我想为users资源启用以下功能
- 更新用户密码
- 更新用户角色
- 更新用户详细信息(例如名字、姓氏等)
所以,根据REST教程和文章,我了解到我需要使用PATCH方法来更新部分资源。
我们在团队中进行了一些讨论,但我们对这两个选项感到困惑:
选项 1
为不同的操作实现多个 PATCH 路由
- 补丁
/api/users/{id}/password - 补丁
/api/users/{id}/role - 补丁
/api/users/{id}/details
选项 2
仅对整个资源实施单个 PATCH 操作。用户将发送 application/json-patch+json 进行部分更新。
- PATCH
/api/users/id(接受JsonPatchDocument参数)
我试图找到 Restful Route Namings 的最佳实践,其中大多数仅涵盖简单的 CRUD 活动或嵌套资源。
对于这种多重 UPDATE 操作,我可以知道命名路由的最佳做法是什么?还是深入研究它的术语?谢谢。
【问题讨论】:
-
请注意,每个
PATCH请求都有一个路由/方法可以实现更好的授权控制。您可以使用此方法使用AuthorizeAttribute注释每个方法,以确保只有您想要更新的字段实际上由授权用户相应地更新(例如,仅允许管理员更新用户角色,或一般情况下:只允许 更新) -
我认为最好的方法是将 PUT 与选项 2 一起使用。对我而言,PATCH 方法应该与 OData 或类似方法一起使用。
-
当然,选项 2。另请参阅如何实现here
标签: rest asp.net-core-webapi patch