Топ-100Создание REST API CRUD приложения
LogoCodOrbits

Раздел: Spring REST

Узнайте, как создавать RESTful веб-сервисы с помощью Spring — легко масштабируемые и удобные для API-интеграции.

Все разделы
Иконка Spring REST

Создание 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
мин.

Similar Articles Icon
Divider

Создание Spring Boot CRUD-приложения

20
мин.

Similar Articles Icon
Divider

Создание Spring Boot Data CRUD-приложения

20
мин.

Similar Articles Icon