9 марта 2026
Тэги: Java, json, rest, Spring Boot, SQL, руководство.
В предыдущей статье Добавление записи через POST-запрос в Spring Boot мы научились создавать новые записи в БД. Теперь попробуем создать полноценный rest-интерфейс для обновления ранее добавленных записей. Исходники проекта вы можете посмотреть на github.
За основу возьмём наше приложение из указанной статьи. Оно состоит из трёх слоёв:
Начнём с доработки репозитория (класс ProfileRepository), в который мы добавим sql-запрос в виде константы. Такие константы принято размещать в начале класса:
Для обновления нам потребуется указать id записи, а также остальные значимые поля.
Вот реализация обновления записи в БД:
В jdbcClient сначала передаём sql-запрос, затем с помощью методов param() указываем необходимые параметры и в конце вызываем метод update(), который отвечает за любые изменения данных.
Перейдём к сервисному слою. В интерфейс ProfileService добавим новый метод:
Его реализация в ProfileServiceImpl:
Здесь операцию нужно выполнить над уже существующей записью, поэтому перед вызовом надо проверить её наличие в БД. Если по каким-то причинам её там не нашлось - сразу кидаем исключение, которое будет преобразовано в соответствующий json благодаря ErrorController, который мы рассматривали ранее.
Согласно архитектуре restful-сервисов, чтение данных мы делаем при помощи GET-запросов, а изменение - при помощи PUT. У GET-запроса не может быть тела запроса (body), все его параметры перечисляются в строке запроса. А PUT-запрос может иметь тело, в которое мы будем помещать целевой json.
Перейдём к нашему контроллеру ProfileController и добавим в него метод обновления профиля.
В качестве аргумента метод принимает модель запроса ProfileRequest, который мы рассматривали в предыдущей статье.
Аннотация @PutMapping говорит, что это - обработчик PUT-запроса, причём в адресной строке также требуется указать personId (после двоеточия указана регулярка, т.е. мы ожидаем любое количество цифр). Значение этого параметра будет помещено в соответствующую переменную благодаря @PathVariable. В ответ метод будет возвращать http-статус 204 - «No Content».
Теперь мы готовы к тому, чтобы выполнить rest-запрос на обновление новой записи в БД. Запускаем приложение и отравляем указанный PUT-запрос по адресу http://127.0.0.1:8080/profiles/1, где 1 - это номер существующей записи. В http-заголовках обязательно указываем Content-Type: application/json.
В ответ в случае успеха получаем http-статус 204. А если укажем id записи, которой нет в БД, то получим следующий ответ:
Таким образом, Spring Boot позволяет буквально за 5 минут создать полноценный обработчик PUT-запроса с валидацией входящих параметров.
В следующей статье Удаление записи через DELETE-запрос в Spring Boot мы научимся удалять существующие записи из БД.
Kotlin, Java, Spring, Spring Boot, Spring Data, Spring AI, SQL, PostgreSQL, Oracle, H2, Linux, Hibernate, Collections, Stream API, многопоточность, чат-боты, нейросети, файлы, devops, Docker, Nginx, Apache, maven, gradle, JUnit, YouTube, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.