我有一个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
}
是标准还是默认传递""
(或{}
,[]
,如果清除非字符串字段)?如何以这种方式清除布尔字段?
答案 0 :(得分:1)
没有标准,所以请遵循最少惊喜的原则。
期望以下内容清除firstName
和lastName
并将nickname
设置为“foo”
{
nickname: "foo"
firstName: null
lastName: null
}
期望以下内容将nickname
设置为“foo”并保持firstName
和lastName
原样是合理的
{
nickname: "foo"
}
但是PUT
假设用于完整更新,因此您可能希望改为使用PATCH
。