0
我想這個方法:沒有PathVariable控制方法刪除所有entitites
@DeleteMapping("/todos/{id}")
public ResponseEntity deleteToDo(
@PathVariable("id") Long itemId,
Principal principal
) {
ObjectNode jsonObject = mapper.createObjectNode();
User currentUser = userService.findLoggedInUser(principal);
if (toDoItemService.toDoExists(itemId)) {
ToDoItem toDoFromDb = toDoItemService.getToDoItemById(itemId);
if (toDoItemService.canUserAccessToDo(toDoFromDb, currentUser)) {
toDoItemService.deleteToDo(itemId);
return new ResponseEntity(HttpStatus.NO_CONTENT);
} else {
jsonObject.put("status", "You can only delete your ToDos");
return new ResponseEntity<>(jsonObject, HttpStatus.FORBIDDEN);
}
} else {
jsonObject.put("status", "ToDo with that ID doesn't exist.");
return new ResponseEntity<>(jsonObject, HttpStatus.NOT_FOUND);
}
}
只有工作的時候有(編號)在URL中。現在,當我做刪除@/todos /它從數據庫中刪除所有的ToDos - 我不知道爲什麼,因爲在這條線if (toDoItemService.toDoExists(itemId))
返回false後,它應該只是返回「用該ID不存在的待辦事項」,而是它將刪除所有待辦事項。
這裏是toDoExists方法:
public boolean toDoExists(Long id) {
if (toDoItemRepository.findOne(id) != null) {
return true;
}
return false;
}
我怎樣才能解決這個問題?我希望用戶只能訪問DELETE @/todos/{id},如果他去/ todos /那麼他會得到'方法不允許'或類似的東西。