Node.js 是否应通过正文发送空字符串值?
我们应该根据请求发送null或空字符串值吗 我的意思是我们有一个可选值,它当前有一个值。若use想要删除那个可选字段的值,那个么API应该理解为null还是为空是删除值 例: 在数据库中:Node.js 是否应通过正文发送空字符串值?,node.js,mongodb,rest,restful-url,Node.js,Mongodb,Rest,Restful Url,我们应该根据请求发送null或空字符串值吗 我的意思是我们有一个可选值,它当前有一个值。若use想要删除那个可选字段的值,那个么API应该理解为null还是为空是删除值 例: 在数据库中: { name: "Alex", phone: "012-333.222" } 现在,使用您想要删除他们的电话号码 我们应该定义如下: PUT /users/user-id-1 { phone: null } 这似乎是一个不好的约定不过,在前端,通常取决
{
name: "Alex",
phone: "012-333.222"
}
现在,使用您想要删除他们的电话号码
我们应该定义如下:
PUT /users/user-id-1
{
phone: null
}
这似乎是一个不好的约定不过,在前端,通常取决于是使用删除按钮还是将字段留空
电话:'
-表示用户留下的字段为空
phone:null
-表示用户点击删除字段按钮。您可以决定是删除该字段,还是将文档字段设置为null
我通常会删除该字段,因为它现在没有用处。如果您只想更新文档中的一个属性,可以使用补丁方法而不是PUT方法,并且您的代码应该如下所示:
PATCH /users/user-id-1
{
phone: ""
}
我们应该根据请求发送null或空字符串值吗
不在乎;也就是说,它告诉我们使用自描述性消息来表示,但它没有告诉我们文档的表示应该是什么
相反,您希望看到的是消息模式定义,特别是以一种可以向后兼容的方式扩展模式的方式设计您的模式。XML社区花了大量时间探索这些想法;这可能是一个很好的起点
在HTTP中,描述资源更改的基本机制是将PUT命令与新表示的副本一起使用。因此,请求可能如下所示:
PUT /users/user-id-1
Content-Type: application/json
{
name: "Alex",
phone: null
}
如果模式的定义方式是,phone
字段是可选的,并且optional和null是等效的(与其他一些隐含值相反),那么您可以等效地使用:
PUT /users/user-id-1
Content-Type: application/json
{
name: "Alex"
}
如果表示非常大,并且所做的更改很小,则可能需要支持修补程序
PATCH /users/user-id-1
Content-Type: application/merge-patch+json
{
phone: null
}
请注意,该规范包括允许客户端发现服务器对资源支持的修补程序表示形式。但我始终使用DELETE方法删除用户,如果用户请求DELETE/user/user-id-1,API将删除数据库中userId=user-id-1的用户在您的情况下是正确的。在我的api中,当我删除一个用户时,我总是添加参数作为确认代码。用我的视图更新了答案。我不想将空值保存到数据库中,我将删除该字段,但UI上没有删除按钮,用户将删除手机文本框中的值,然后单击更新按钮。前端发送{phone:}或{phone:null},我不喜欢这样,所以我需要一个新的定义。因为如果textbox为空,前端总是发送null,如果UI有很多textbox,API会收到很多null值,并且必须进行meny检查。在这种情况下,用户应该
将{name:'name',phone:'phone',email:'email}
放入其中,您只需更新整个子文档即可。而你却在不断更新。?我不太明白。案例用户删除电话值如何?我不想更新整个文档,我只想更新一些使用really Wastes update的字段您可以做任何您想做的事情。可能只是发送null
。
PATCH /users/user-id-1
Content-Type: application/merge-patch+json
{
phone: null
}