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 Запрос
Полезная нагрузка: {комната: Кухня, бытовая техника: Холодильник, пол: Главная | Этаж}
Ответы
Ответ 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
});
};