有关REST资源更新的其他操作

时间:2016-06-02 10:29:13

标签: rest

我有一个User实体,如下所示:

class UserVM {
    id: number;
    name: string;
    email: string;
}

有一个REST API可以处理用户列表,我们可以通过ID让列表更新个人用户:

GET /api/users
PUT /api/users/1 { name: ..., email: ... }

现在,我需要在用户编辑器表单中添加一个复选框,其中显示"发送更改报告"。如果选中,则更新的用户会收到一封电子邮件,说明"您的个人资料已更新"。

此复选框绝对与User模型无关,我想知道如何在API中正确表示它。以下是我考虑的几个选项:

  1. 单独UserVMEditUserVM,为后者添加新标记并将其用于PUT次请求
  2. 添加一个不同的非休息方法,只发送电子邮件,在更新后从客户端调用
  3. 添加查询参数,例如PUT /api/user/1?send=1 { ... }
  4. 此类案件的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

由于您希望“部分”更新与用户相关的信息,因此您可以使用PATCH方法。这将是一种REST方法。

关于第二个选项:如果你添加一个不同的方法,如“/ sendtheemail”,这将是一个RPC方法。

此SO问题对您有用:Best practice for partial updates in a RESTful service