Создание REST API CRUD приложения
Last updated: 11 мая 2025 г.Создадим 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)
1package com.MavenWebApps.RestWebApplicationCRUD.controller;
2
3import java.util.List;
4
5@RestController
6public class MainController {
7
8 @Autowired
9 private ServiceInterface serviceclass;
10
11 //READ. Всех актеров
12 @GetMapping("/actors")
13 public List<Actor> getActors() {
14 return serviceclass.getListOfActors();
15 }
16
17 //READ. Одного актера
18 @GetMapping("/actors/{actorID}")
19 public Actor getActor(
20 @PathVariable int actorID){
21 Actor actor =
22 serviceclass.getActor(actorID);
23
24 return actor;
25 }
26
27 //CREATE
28 @PostMapping("/actors")
29 public Actor addActor(
30 @RequestBody Actor actor) {
31 //Из нового здесь можно увидеть
32 //аннотацию @RequestBody,
33 //но здесь ничего сложного.
34 //Когда клиентом посылается JSON
35 //методом POST в наш контроллер
36 //средства Jackson конвертируют
37 //за кулисами этот JSON в объект actor
38 //и мы можем использовать этот объект.
39 //В этом обработчике мы добавляем
40 //присланного актера в базу.
41 serviceclass.saveActor(actor);
42 return actor;
43 }
44
45 //UPDATE
46 @PutMapping("/actors")
47 public Actor updateActor(
48 @RequestBody Actor actor) {
49 serviceclass.saveActor(actor);
50 return actor;
51 }
52
53 //DELETE
54 @DeleteMapping("/actors/{actorID}")
55 public String deleteActor(
56 @PathVariable int actorID) {
57 serviceclass.deleteActor(actorID);
58 return "Deleted customer id – " +actorID;
59 }
60}
Давайте же протестируем созданные обработчики.
В таблице 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 четыре успешно удалился из БД.

Следующие уроки
Spring Boot: в чём его сила и удобство?
22
мин.
Создание Spring Boot CRUD-приложения
20
мин.
Создание Spring Boot Data CRUD-приложения
20
мин.