Я застрял на некоторое время с чем-то, что кажется очень тривиальным, но я просто не могу заставить его работать. У меня есть контроллер AngularJS, который вызывает backen-приложение Spring для загрузки через rest. Я могу подтвердить, что если я делаю запрос к бэкэнду через Почтальон, он работает хорошо, просто когда он выполняется через страницу html, он просто не работает, я получаю 415.
var survey = angular.module('survey', []);
var surveyDto = {
age:"",
sex:"",
status:"",
chronic:"",
keyWorker:""
};
survey.controller('surveyController', function($scope, $http) {
$scope.sendAnswers = function(surveyDto) {
$http(
{
method: 'POST',
url: 'http://localhost:8080/surveys/new',
data: angular.toJson(surveyDto),
headers: {'Content-Type': 'application/json'}
}
);
};
});
В серверной части у меня очень простой Java контроллер:
@RequestMapping(value = "/surveys/new", consumes = "application/json", produces = "application/json", method = RequestMethod.POST)
public ResponseEntity<NewSurveyResponse> newSurvey(HttpServletRequest request) {
//...
}
Когда веб-страница использует контроллер для отправки запроса, я получаю 415 (Неподдерживаемый тип носителя).
Я не понимаю, почему. Раньше я пытался использовать свой собственный объект dto в контроллере для представления данных, но также не работал. Я не уверен, чего не хватает. Я где-то читал, что я могу использовать HttpServletRequest, но также не работает. Любая идея?
Я использую следующие версии Spring и AngularJS - GoogleApis Angular 1.7.9 - Spring boot 2.2.4
Обновление Во время отладки Я могу заметить, что используемый тип носителя правильный. См. Изображение:
обновление 2 При попытке кода, предложенного Марко Белером, я получаю следующую ошибку:
обновление 3 Я попытался добавить импорт для ошибки, описанной выше, но я получаю это