запрос на отправку angular $resource с методом УДАЛЕНИЯ и телом запроса выдает ошибку 415

#angularjs #resources

#angularjs #Ресурсы

Вопрос:

Я отправляю запрос на удаление через angular $resource, однако он всегда выдает ошибку 415, а тело запроса было преобразовано в строку, которая выглядит как запрос get.

 'use strict';

(function(angular, window){

var authsys = angular.module('authsysApp');

authsys.factory('$_privilege', ['$resource', '$q', '$notify', function($resource, $q, $notify){

    var resource = {
        //删除权限
        batchRemovePrivilege: $resource(window.ctxPath   '/rolepri/batchDeletePrivilegeFromRole', {}, {delete:{method: 'DELETE'}})
    };

    return {
        batchRemovePrivilege: batchRemovePrivilege
    };

    function batchRemovePrivilege(params){

        var q = resource.batchRemovePrivilege.delete(params).$promise;
        return q.then(function(){
            return true;
        });
    }


}]);

})(angular, window);
  

введите описание изображения здесь

Ответ №1:

Попробуйте добавить заголовок к вашему запросу:

 var resource = {
    //删除权限
    batchRemovePrivilege: function(params){
           return $http({
                method: 'DELETE',
                url: window.ctxPath   '/rolepri/batchDeletePrivilegeFromRole',
                data: params,
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
           });
    }
};
  

выполнить:

 var q = resource.batchRemovePrivilege(params).$promise;
  

Комментарии:

1. спасибо за ваш ответ, поскольку мы используем ngResource для выполнения интерактивной работы, поэтому я не хочу нарушать это правило. разве мы не можем достичь цели с помощью ngResource?

2. Попробуйте добавить заголовок в $resource. возвращает $resource(window.ctxPath ‘/rolepri/batchDeletePrivilegeFromRole’, {}, {удалить:{метод: ‘УДАЛИТЬ’}, заголовки: { ‘Content-Type’: ‘application/x-www-form-urlencoded’ }})

3. Спасибо @Tal. Добавление заголовков: {‘Content-Type’: ‘application / json’} сработало для меня.