正如 Lèse 所指出的,javascript 类型null
不是 URL 参数的有效值。
javascriptnull
值与字符串不同'null'
。因此,如果您希望您的 URL 看起来像/comments/123?content=null
只提供一个字符串'null'
。URL 参数不是 JSON,null
javascript 中的值与后一种情况的含义不同,content=null
因为在后一种情况下,任何给定的服务器都会将 null 解释为字符串值。
Angular 的 $http 服务在使用它们构建 url 之前过滤掉 params 对象中的空值和未定义值,因为没有标准化的方式将undefined
“值”作为“值”发送到服务器。这没有任何意义。但是,如果您想发送一个类似的字符串,'undefined'
或者'null'
这很好,但它需要在服务器端实现才能将其解释为这样。
如果您正在发出PUT
请求,为什么您的一些数据在资源中被 JSON 序列化,而其中一些数据是通过 URL 参数发送的?也许示例代码的表现不佳,但在该示例中,您发送的PUT
请求带有响应正文{"id": 123}
和 url /comments/123
。这不是多余的吗?为什么不将content
JSON 字符串中的属性和数据发送到服务器?然后它实际上将具有null
您正在寻找的值,因为 JSON 字符串可以表示一个null
类型值。另外,如果您要删除/销毁记录,为什么不使用DELETE
请求,而是将销毁方法与 PUT 请求混为一谈?
那么为什么不这样呢?我不确定这User
与它有什么关系......
var Comment = $resource('/comments/:id', {id: @id}, {
destroy: {method: 'PUT'}
});
new Comment({id: 123, content: null}).$destroy();