Как указал Лезе, тип javascript null
не является допустимым значением для параметра URL.
Значение null
в JavaScript не совпадает со строкой 'null'
. Поэтому, если вы хотите, чтобы ваш URL-адрес выглядел как /comments/123?content=null
, просто укажите строку 'null'
. Параметры URL не являются JSON, и значение null
в javascript не означает то же самое, что и content=null
, потому что в последнем случае null будет интерпретироваться любым данным сервером как строковое значение.
Служба Angular $http отфильтровывает нулевые и неопределенные значения в объект params перед созданием с ними URL, потому что не существует стандартизированного способа отправки 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();
person
jbielick
schedule
10.08.2014
DESTROY
. - person Hengjie   schedule 11.08.2014