使用带有API的JSON进行部分编辑的常见行为是什么?

时间:2018-04-04 23:10:55

标签: rest api

我有一个API,并且我已经公开了一个EditUser端点,它接受带有可选值的JSON数据。我们的UI允许清除文本字段并保存以清除字段(而不是清除按钮)并将数据保存为空。

从API的角度来看,为"编辑","清除"或"保持不同输入的常见行为是" 。 假设我们有一些我们想要编辑的信息,如下所示:

   {
    nickname: "foo"
    firstName: "John"
    lastName: "Doe"
   }

鉴于某人"已清除" lastName字段和点击保存,我们的UI将发送一个输入:

   editInput = {
    nickname: "foo"
    firstName: null
    lastName: "Doe"
   }

因此传递的JSON输入是所有其他字段以及新字段。 (我们使用谷歌数据存储区,不允许部分更新)。

鉴于此,公开此API我们不希望有人添加编辑以每次都知道当前状态,并且可能希望发送编辑输入,如下所示 input = { nickname: "bar" }使用firstName和lastName undefined。如果他们想要清除这些字段,他们就会通过

   input = {
    nickname: "foo"
    firstName: null
    lastName: null
   }

是标准还是默认传递""(或{}[],如果清除非字符串字段)?如何以这种方式清除布尔字段?

1 个答案:

答案 0 :(得分:1)

没有标准,所以请遵循最少惊喜的原则。

期望以下内容清除firstNamelastName并将nickname设置为“foo”

是合理的
{
  nickname: "foo"
  firstName: null
  lastName: null
}

期望以下内容将nickname设置为“foo”并保持firstNamelastName原样是合理的

{
  nickname: "foo"
}

但是PUT 假设用于完整更新,因此您可能希望改为使用PATCH