В вашем случае вы, вероятно, могли бы вернуть 200 или 204 (202 для асинхронного / в процессе удаления), как указано в документации MDN :
Если метод DELETEуспешно применяется, возможны несколько кодов состояния ответа:
Код состояния 202 (Принят), если действие, скорее всего, будет успешным, но еще не введено в действие.
A 204 (Нет содержимого)код состояния, если действие было выполнено, и дополнительная информация не указывается.
200 (ОК) код состояния, если действие было выполнено, и ответное сообщение включает в себя представление, описывающее состояние.
Для 204
, что вы хотите:
return ResponseEntity.noContent().build();
Для 200
, что вы хотите, например:
return ResponseEntity.ok("Entity deleted");
Кодизменить на возврат 204
В вашем фактическом коде часть orElseGet()
не должна компилироваться, поскольку ok()
не возвращает Optional
.
Для обработки случая идентификаторапройденный клиентом не имеет соответствияс любой существующей сущностью вы можете перехватить EmptyResultDataAccessException
(подкласс RuntimeException), который выдается JpaRepository.deleteById()
.
Например:
@DeleteMapping("remove/{id}")
public ResponseEntity<?> remove(@PathVariable String id) {
try{
transactionNotesService.delete(Long.valueOf(id));
return ResponseEntity.noContent().build();
}
catch (EmptyResultDataAccessException e){
return ResponseEntity.notFound().build();
}
}