REST使用多个字段进行部分更新
假设我有一个rest服务,它允许应用程序创建用户对象 URI:/usersREST使用多个字段进行部分更新,rest,resteasy,Rest,Resteasy,假设我有一个rest服务,它允许应用程序创建用户对象 URI:/users HTTP方法:POST { "firstName":"Edward", "lastName": "Nygma", "dob": "01011981", "email": "en@gc.com", "phone": "0123456789" } 在第一次发布时,将创建用户对象并返回用户ID 假设有第二个服务允许用户更新lastName和email字段 URI:/user/1/最后一封电子邮件
HTTP方法:POST
{
"firstName":"Edward",
"lastName": "Nygma",
"dob": "01011981",
"email": "en@gc.com",
"phone": "0123456789"
}
在第一次发布时,将创建用户对象并返回用户ID
假设有第二个服务允许用户更新lastName和email字段
URI:/user/1/最后一封电子邮件
HTTP方法:POST
{
"lastName": "scissorhands",
"email": "ec@bc.com"
}
假设为了带宽,发送完整用户对象不是此更新调用的选项
这是执行涉及多个字段的部分更新的正确方法吗?使用补丁也是不可能的
编辑:
我知道正确的RESTfull方法是将更新作为子资源发布到每个字段,但是为了带宽/业务需求,这个更新必须在一次调用中完成。这样做正确吗 编辑2: 我们的实现不支持HTTP补丁方法,因此我在最初的问题中指出使用补丁是不可能的。话虽如此,也许我应该重新措辞这个问题 因为系统/业务需求阻止我们在一个宁静的庄园中正确地实现这一点。处理这种情况的最佳方法是什么。使用动词“update-”会突然让人觉得这是一个RPC调用。当你想删除此电子邮件时,你会怎么做?对此URI执行删除操作看起来有点愚蠢 URI:/user/1/电子邮件和 URI:user/1/lastname更有意义,因为电子邮件只是一个子资源,您可以使用这些资源上的所有动词 是的,如果您想更新2个资源而不是1个资源,这将需要2个调用 对于资源的部分更新,请在资源上使用“补丁”动词。这样,您根本不需要新的URI。() 参考: 引述: 什么时候应该使用补丁HTTP方法 HTTP方法补丁可用于更新部分资源。例如,当您只需要更新资源的一个字段时,放置完整的资源表示可能会很麻烦,并且会占用更多带宽
- 更多信息,请访问: