Клиент шлет запрос на REST сервер на удаление записи. Исполнение на Angular
$scope.deleteItem = function(id) {
var url = 'http://localhost:8080/api/message/' + id;
var config = { headers: {'Content-Type': 'application/json'}};
$http.delete(url, config).then(function(response){
console.log(response);
}, function(response){
console.log(response);
});
На стороне сервера Spring boot
@RequestMapping(
value = "api/message/{id}",
method = RequestMethod.DELETE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteMessage(@PathVariable Long id) {
if (!messageService.delete(id)) {
throw new DataNotFoundException("Data with id=" + id + " not found.");
}
return ResponseEntity.ok("Successfully deleted user");
}
Возвращает текст, это заглушка, на самом деле я пока не знаю, что правильно возвращать в таком случае, по идеи true, хотя Angular может ответ проверить и со строкой == "готово". В общем если дадите доп. совет то спасибо.
Сейчас получаю ответ на стороне сервера:
Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'null' not supported
лог в консоль браузера:
DELETE http://localhost:8080/api/message/1 415
config: Object
data: Object
headers: (d)
status: 415
statusText: ""
Что я делаю не так?
1) запрос на маппер так никогда не пишется 2) ссылка на конкретный реквест контроллер должна иметь вид - /api/message/ + id 3) взгляните на мой пример регистрации пользователя, должен вам помочь с вашим примером
$.ajax({
type: "POST",
url: "/api/account",
data: JSON.stringify(reg),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$.gritter.add({
title: '<i class="fa fa-info-circle"></i> Поздавляем',
text: 'Вы успешно зарегистрированы!',
sticky: true,
time: '',
class_name: 'gritter-info'
});
setTimeout(function() {
window.location = "/login.jsp";
}, 2000);
},
error: function (jqXHR, status) {
$('.login-wrapper').removeClass('fadeOutUp');
var data = jqXHR.responseJSON;
$.gritter.add({
title: '<i class="fa fa-times-circle"></i> Ой, произошла ошибка!',
text: data.msg,
sticky: false,
time: '',
class_name: 'gritter-danger'
});
}
});
Мое решение: серверная сторона
//Delete the item
@RequestMapping(
value = "api/message/{id}",
method = RequestMethod.DELETE)
public ResponseEntity<?> deleteMessage(@PathVariable Long id) {
if (!messageService.delete(id)) {
throw new DataNotFoundException("Data with id=" + id + " not found.");
}
return new ResponseEntity<>(HttpStatus.OK);
}
клиентская сторона
$scope.deleteItem = function (id) {
$http.delete($scope.url + 'message/' + id).success(function (response) {
делаем что то, например удаляем из массива или перезагружаем страницу
}, function (response) {
console.log("Return error");
});
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Помогите пожалуйста разобраться с подключением к Базе данныхнужно сделать интерфейс и чтобы по нажатию кнопки программа подключалась к базе,...
мне в методе нужно реализовать сортировку List используя объект класса Sort, но я сделал используя обычный метод sort, но это не подходит, объясните...
Интересует как можно определить тип generic-параметра с помощью Reflection в Java? И есть ли для этого другие методы?