1. Основы Spring Boot и устройство REST API
Основы Spring Boot и устройство REST API
Зачем этот курс и что вы получите
Этот курс посвящён созданию серверных приложений на Spring Boot, которые предоставляют REST API и работают с базой данных, а также построению кода по принципам MVP-архитектуры (Model-View-Presenter), адаптированной под серверную разработку.В этой первой статье мы заложим фундамент:
> "REST provides a set of architectural constraints that, when applied as a whole, emphasizes scalability of component interactions..." Roy Fielding — Architectural Styles and the Design of Network-based Software Architectures
Что такое Spring Boot
Spring Boot — это надстройка над экосистемой Spring, которая помогает быстро запускать приложения с минимальной настройкой.Ключевые идеи Spring Boot:
application.properties или application.yml.Полезные официальные источники:
Что такое REST API
API — это набор правил, по которым одна программа обращается к другой.REST API — это популярный стиль построения API поверх протокола HTTP. На практике это означает:
/api/users)Ресурсы и URL
Хорошее правило: URL описывает что это за ресурс, а метод HTTP — что сделать.Примеры:
GET /api/users — получить список пользователейGET /api/users/10 — получить пользователя с id = 10POST /api/users — создать пользователяPUT /api/users/10 — заменить данные пользователяPATCH /api/users/10 — частично изменить пользователяDELETE /api/users/10 — удалить пользователяМетоды HTTP и их смысл
| Метод | Обычно означает | Пример | |---|---|---| |GET | Получить данные | GET /api/users/10 |
| POST | Создать новый объект | POST /api/users |
| PUT | Полная замена объекта | PUT /api/users/10 |
| PATCH | Частичное изменение | PATCH /api/users/10 |
| DELETE | Удаление | DELETE /api/users/10 |HTTP-статусы
Сервер отвечает не только данными, но и статус-кодом. Самые важные:200 OK — успешно201 Created — успешно создано (часто после POST)204 No Content — успешно, но тела ответа нет (часто после DELETE)400 Bad Request — клиент отправил некорректные данные404 Not Found — ресурс не найден500 Internal Server Error — ошибка на стороне сервераКак выглядит “поток” запроса в Spring Boot
Когда клиент (например, фронтенд или Postman) делает запрос, на сервере обычно происходит цепочка:!Диаграмма показывает типовой путь запроса через слои приложения
Минимальный проект Spring Boot для REST
Создание проекта
Самый простой путь — через Spring Initializr. Для начала достаточно:Spring Web
- Validation (часто нужно почти сразу)База данных и JPA мы подключим в следующих статьях, но уже сейчас построим правильную архитектурную основу.
Точка входа приложения
Типичный класс запуска:@SpringBootApplication включает сразу несколько важных механизмов Spring, в том числе автоматический поиск компонентов.
Контроллер: входная точка REST API
Controller отвечает за HTTP-уровень:Пример простейшего контроллера:
Здесь:
@RestController говорит Spring возвращать данные (часто JSON), а не HTML-страницы@RequestMapping("/api/users") задаёт общий путь@GetMapping обрабатывает GET запросСервис: бизнес-логика
Service — слой, где живут правила приложения. Например:Важно: сервис не должен знать, как именно устроен HTTP (заголовки, коды ответов). Его задача — бизнес-логика.
Пример заготовки сервиса:
И тогда контроллер вызывает сервис:
Репозиторий: доступ к данным
Repository — слой доступа к данным. Позже здесь будет база данных и Spring Data JPA.Пока достаточно понять идею:
В следующих статьях мы подключим:
spring-boot-starter-data-jpaDTO: почему не стоит отдавать наружу ваши внутренние модели
Когда вы строите API, важно разделять:Для контрактов используют DTO (Data Transfer Object): простые классы “для передачи данных”.
Почему это важно:
Пример DTO для создания пользователя:
@NotBlank означает: строка не должна быть пустой или состоять из пробелов.
@Email означает: строка должна быть похожа на email.
Пример POST endpoint с DTO
Здесь:
@RequestBody читает JSON из тела запроса@Valid запускает проверку ограничений DTO@ResponseStatus(HttpStatus.CREATED) возвращает 201 CreatedГде здесь MVP и как его понимать на бэкенде
Классический MVP чаще применяют в интерфейсах (UI), но его идеи полезны и в серверной разработке как дисциплина разделения ответственности.В терминах REST API можно объяснить так:
Практическая цель MVP в нашем курсе:
!Поясняет, как MVP можно адаптировать к серверному REST API
Типовая структура пакетов проекта
Один из простых и понятных вариантов — группировать код по функциональным областям (например,user, order).Пример:
com.example.demo.userUserController
- UserService
- CreateUserRequest / UserResponse
- UserPresenter или UserMapper
- позже: UserEntity, UserRepositoryТак легче поддерживать проект: всё, что относится к пользователям, лежит рядом.