场景:
一个User
类有几组属性:password
, address
, preference
, roles
.
我们需要不同的 Ajax 调用来更新 (1) 用户密码、(2) 用户配置文件、(3) 用户所在的角色。
所有教程和示例仅显示一个 POST 操作来更新整个 User 类。我的问题是我们如何才能只更新部分课程。
例如,在更新用户密码时,我们将:
- 显示一个文本框以从用户输入中收集新密码。
- 进行 Ajax 调用,仅将新密码与 userId(如:{id=3, newPassword=xxxxx})一起发布到 WebAPI POST 操作。
- 该操作只会更新用户的密码。
一种解决方案:(最容易想到的)
- 使用 userId调用
GET
操作以检索用户的所有数据 - 使用从 Web 用户输入中获得的值更新用户数据中的密码
- 使用更新的数据调用
POST
操作,其中包含 User 类中的所有属性。 - 该
POST
操作将更新整个数据,而无需知道仅更改了密码。
好处:POST
对于ApiController
.
缺点:我们要Ajax两次。
那么,有没有可能我们可以POST
在一个中执行多个操作ApiController
?例如PostPassword(userId, password)
,PostProfile(userId, profile)
和PostRoles(userId, roles)
。
这样,我们只会调用PostPassword
发送密码到ApiController
。在客户端,只有一个 Ajax 调用。它在我们将进行更新的服务器上。好处当然是减少了通过 Internet 传输的数据。
如果可能的话,将所有不同POST
的调用定向到它们的相应操作的正确方法是什么ApiController
?
请帮助我们。谢谢你们。