2016-10-12 2 views
2

Я хочу удалить тег, созданный с помощью http post. вот код, который я пробовал.

$http({ 
    method: 'DELETE', 
    url: '/api/tags', 
    data: [vm.tags.name] 
}).success(function(data) { 
    console.log('Gets DELETED'); 
    vm.tags.name = data; 
}).error(function(data) { 
    console.log('Does not get DELETED'); 
}); 

Однако это не сработало и отправляет массив с [null]. Так что я чего-то не вижу и не понимаю. Я имею в виду, что если POST работает, он должен работать одинаково с DELETE, правильно? Кстати, он показывает журнал «Get DELETED», но не сделал этого.

ответ

3

Я получил решение! В моем случае HTTP 1.1 смог отправить тело, но заголовок не смог использовать содержимое JSON. Итак, добавив headers: {'Content-Type': 'application/json;charset=utf-8'} к полю data: $http.delete, он работал, и массив получил send.

Надеюсь, это поможет кому-то.

Спасибо за ответы!

1

Посмотрите на это answer, если вы отправляете что-то в теле DELETE, игнорируется.

Вы должны отправить в путь, как это:

current/path?id=1&id=2&id=3&id=4 

Это как метод GET, вы не можете отправить что-либо в теле.

UPDATE

Если вы сделаете запрос с параметрами URL в примере, вы получите объект, как это:

{ id : [1, 2, 3, 4] } 
+0

но статья гласит, что HTTP 1.1 разрешает это? – d8ta

+0

ok, но давайте предположим, что это проблема, как я могу отправить массив в путь, который я пробовал: 'api/tags /' + [myarray] – d8ta

+0

Я так не думаю, если вы посмотрите в [HTTP документ для удаления] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.7), вы увидите, что в URI указаны только указанные параметры. –