Подтвердить что ты не робот

AngularJs DELETE с наборами данных неправильный заголовок содержимого

Я делаю запрос $http DELETE с полезной нагрузкой, но тип содержимого неверен. У меня есть объект данных, но тип содержимого получает значение text/plain вместо application/json. Как видно из приведенного ниже кода и сетевого запроса ниже, на самом деле есть объект данных со значениями. Есть ли для этого работа? Большое спасибо!

код:

    $http({  
        method: "DELETE",  
        url: ".../v2/places/" + place.id + "/locations/remove",  
        data: location,  
        headers: { Authorization: "Bearer " + rootServices.getToken() }  
    })  

chrome запрос запроса сети:

Удаленный адрес: 54.83.54.37: 443
URL:../v2/место/53b43e03e4b00cb25bcb16af/место/удалить
Метод запроса: УДАЛИТЬ
  Код состояния: 500 Внутренний запрос на ошибку сервера
Accept: application/json, text/plain, */*
Accept-Encoding: GZIP, выкачать, SDCH
Accept-Language: EN-US, еп, д = 0,8
Авторизация: Носитель.....   Подключение: держать-жив
Content-Length: 66
Content-Type: текст/равнинный, кодировка = UTF-8
Ведущий: песочница.... чистый
Происхождение: 127.0.0.1: 9000
Referer: 127.0.0.1: 9000/сессия
User-Agent: Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36
(KHTML, например, Gecko) Chrome/35.0.1916.153 Safari/537.36 Запрос
Полезная нагрузка: {комната: Кухня, бытовая техника: Холодильник, пол: Главная | Этаж}

4b9b3361

Ответ 1

Вы можете установить тип содержимого в заголовках вместе с заголовком авторизации

$http({  
        method: "DELETE",  
        url: ".../v2/places/" + place.id + "/locations/remove",  
        data: location,  
        headers: {'Content-Type': 'application/json', Authorization: "Bearer " + rootServices.getToken() }  
    })  

Или вы можете настроить их в широком диапазоне:

module.config(function($httpProvider) {
  //$http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
  $httpProvider.defaults.headers.delete = { 'Content-Type' : 'application/json' };
});

Состояние документов:

Настройка заголовков HTTP Служба $http автоматически добавит определенные HTTP-заголовки для всех запросов. Эти настройки по умолчанию могут быть полностью настроены путем доступа к объекту конфигурации $httpProvider.defaults.headers, который в настоящее время содержит эту конфигурацию по умолчанию:

$httpProvider.defaults.headers.common(заголовки, которые являются общими для всех запросы): Принять: application/json, text/plain, */* $httpProvider.defaults.headers.post: (значения по умолчанию для POST запросы) Content-Type: application/json $httpProvider.defaults.headers.put(значения по умолчанию для запросов PUT) Content-Type: application/json Чтобы добавить или перезаписать эти значения по умолчанию, просто добавьте или удалите свойство из этих объектов конфигурации. к добавьте заголовки для метода HTTP, отличного от POST или PUT, просто добавьте новый объект с наименьшим именем HTTP-метода в качестве ключа, например. `$ httpProvider.defaults.headers.get = {'My-Header': 'value'}.

По умолчанию также можно установить во время выполнения через объект $http.defaults таким же образом. Например:

https://docs.angularjs.org/api/ng/service/$http

Ответ 2

Я выяснил эту проблему. Нам нужно ввести "content-type" вместо "Content-Type". Если я это понимаю, нижний регистр отменяет предыдущий.

Я покажу пример:

$scope.deleteObject = function (object) {
    var objectId = object.id;
    var url = '/services/rest/deleteObject/' + objectId;
    var config = {
        headers: {
            'content-type': 'application/json'
        }
    };
    $http.delete(url, config)

    .then(function (response) {
        DO SOMETHING

    }, function (error) {
        DO SOMETHING
    });

};