我想知道在WebApi .Net Core中设计多个资源更新的最佳方法是什么。
例如,我想为“用户”资源启用以下功能:
- 更新用户密码 - 更新用户角色 - 更新用户详细信息(例如名字,姓氏等)
根据REST教程和文章,我了解到需要使用PATCH方法来更新部分资源。
我们在团队中进行了一些讨论,并对这两个选项感到困惑:
选项1
为不同操作实现多个PATCH路由:
- PATCH /api/users/{id}/password - PATCH /api/users/{id}/role - PATCH /api/users/{id}/details
选项2
仅为整个资源实现单个PATCH操作。用户将发送application/json-patch+json以进行部分更新。
- PATCH /api/users/id (接受JsonPatchDocument参数)
我尝试查找RESTful路由命名的最佳实践,大多数只涵盖简单的CRUD活动或嵌套资源。
对于这种多个更新操作,我想知道命名路由的最佳实践是什么?或者需要深入学习的相关术语是什么?谢谢。
例如,我想为“用户”资源启用以下功能:
- 更新用户密码 - 更新用户角色 - 更新用户详细信息(例如名字,姓氏等)
根据REST教程和文章,我了解到需要使用PATCH方法来更新部分资源。
我们在团队中进行了一些讨论,并对这两个选项感到困惑:
选项1
为不同操作实现多个PATCH路由:
- PATCH /api/users/{id}/password - PATCH /api/users/{id}/role - PATCH /api/users/{id}/details
选项2
仅为整个资源实现单个PATCH操作。用户将发送application/json-patch+json以进行部分更新。
- PATCH /api/users/id (接受JsonPatchDocument参数)
我尝试查找RESTful路由命名的最佳实践,大多数只涵盖简单的CRUD活动或嵌套资源。
对于这种多个更新操作,我想知道命名路由的最佳实践是什么?或者需要深入学习的相关术语是什么?谢谢。
PATCH
请求只有一个路由/方法可以更好地进行授权控制。您可以使用这种方法为每个方法添加AuthorizeAttribute
注释,以确保只有经过授权的用户才能更新您想要更新的字段(例如,只有管理员被允许更新用户角色,或者通常情况下:只有<其他用户组>被允许更新<字段>)。 - user8574318