Создадим crud приложение только теперь с использованием REST
.
Создадим новое Maven приложение с такими папками и файлами.

Содержимое файлов в этом crud приложении ничем не отличается от содержимого предыдущего crud приложения, которое мы создавали, за исключением содержимого файла контроллера и pom файла, в который просто нужно добавить зависимость для поддержки jackson.
Рассмотрим содержимое файла контроллера, в котором собственно пишется api.
Заметьте что в Mapping-ах внизу повторяющиеся адреса /actors
.
Это стандартная практика в spring rest приложениях, что для разных операций с тем или иным конкретным классом (в данном случае с Actor) используется один и тот же адрес, а получатель запроса (получатель это RestController) будет распознавать какой из обработчиков вызывать основываясь на HTTP методе присланного запроса
То есть крайне не желательно называть адреса по разному. Например: /getallactors
, /getactorfromdb
, /savesingleactor/{actorID}
и т.д.
Лучше пусть контроллер сам распознает какой из обработчиков вызывать по HTTP методу запроса.
- Get запрос будет вызывать обработчик помеченный аннотацией @GetMapping,
- Post запрос будет вызывать обработчик помеченный аннотацией @PostMapping,
- Put запрос будет вызывать обработчик помеченный аннотацией @PutMapping,
- Delete запрос будет вызывать обработчик помеченный аннотацией @DeleteMapping)
Давайте же протестируем созданные обработчики.
В таблице actor сейчас три актера:

Давайте получим данные всех актеров в формате JSON через обработчик getActors
. Этот обработчик извлекает актеров из БД помещает их в List и отправляет этот List с актерами в формате JSON.
Обратимся к этому обработчику через Rest Client по ссылке /actors
запросом GET. RestController распознает, что был сделан GET запрос и вызывает обработчик помеченный аннотацией GetMapping.

Как видим, List с объектами актеров из БД успешно пришел в формате JSON в ответ на GET запрос.
Давайте получим данные одного конкретного актера в формате JSON через обработчик getActor
. Этот обработчик извлекает конкретного актера из БД по присланному в ссылке id этого актера и отправляет его в формате JSON.
Обратимся к этому обработчику через Rest Client по ссылке /actors/2
запросом GET чтобы получить JSON актера с id
два. RestController распознает, что был сделан GET запрос и вызывает обработчик помеченный аннотацией GetMapping. Но в этот раз уже тот где ссылка /actors/{actorID}
, а не просто /actors

Как видим обработчик успешно извлек актера с id
два и отправил его в ответ на GET запрос в формате JSON.
Теперь давайте добавим нового актера в БД через обработчик addActor
. Этот обработчик получает информацию нового актера в формате JSON, конвертирует этот JSON в объект класса Actor и добавляет этот объект в БД. Также он возвращает данные добавленного актера в формате JSON в ответ на POST запрос.
Обратимся к этому обработчику через Rest Client по ссылке /actors
запросом POST, при этом во вкладке BODY
пишем в формате JSON данные актера, которого мы хотим отправить в контроллер и добавить БД. RestController распознает, что был сделан POST запрос и вызывает обработчик помеченный аннотацией PostMapping.

Выше видим, что обработчик успешно отправил в ответ на POST запрос данные добавленного в БД актера в формате JSON. Ниже можно увидеть, что актер успешно добавился в БД.

Теперь давайте обновим присутствующего актера в БД через обработчик updateActor
. Этот обработчик получает новую информацию для обновления существующего в БД актера в формате JSON, конвертирует этот JSON в объект класса Actor и обновляет актера в БД исходя из id, который был передан в JSON. Также он возвращает данные обновленного актера в формате JSON в ответ на PUT запрос.
Обратимся к этому обработчику через Rest Client по ссылке /actors
запросом PUT, при этом во вкладке BODY пишем в формате JSON данные актера, которого мы хотим отправить в контроллер и обновить в БД, при этом в отправляемом JSON обязательно нужно указать id
актера, которого мы хотим обновить. RestController распознает, что был сделан PUT запрос и вызывает обработчик помеченный аннотацией PutMapping.

Выше видим, что Обработчик успешно отправил в ответ на PUT запрос данные обновленного в БД актера в формате JSON. Ниже можно увидеть, что актер с id четыре успешно обновился в БД. Naomi Watts изменилось на Michael Pitt.

Давайте удалим конкретного актера из БД через обработчик deleteActor
. Этот обработчик удаляет конкретного актера из БД по присланному в ссылке id
этого актера и отправляет сообщение, что актер с таким-то id удален из БД.
Обратимся к этому обработчику через Rest Client по ссылке /actors/4
запросом DELETE чтобы удалить из БД актера с id
четыре. RestController распознает, что был сделан DELETE запрос и вызывает обработчик помеченный аннотацией DeleteMapping.

Выше видим, что Обработчик успешно отправил в ответ на DELETE запрос сообщение о том, что удален актер с id
четыре. Ниже можно увидеть, что актер с id четыре успешно удалился из БД.
