Как написать REST API на Java за 30 минут: пошаговое руководство

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Как написать REST API на Java за 30 минут: пошаговое руководство

Создание REST API — один из ключевых навыков современного Java-разработчика. REST (Representational State Transfer) позволяет строить легковесные, масштабируемые и понятные веб-сервисы. В этом руководстве мы за 30 минут создадим полноценный REST API с помощью Spring Boot. Вы научитесь настраивать проект, создавать эндпоинты для работы с пользователями, обрабатывать JSON и тестировать API через Postman или браузер.

1. Что такое REST API и зачем он нужен?

REST API — это архитектурный стиль, при котором клиент и сервер обмениваются данными через HTTP-запросы. Основные принципы REST:

  • Ресурсы — каждый объект (пользователь, товар, заказ) представлен URL-адресом.
  • HTTP-методы — GET (чтение), POST (создание), PUT (обновление), DELETE (удаление).
  • Stateless — каждый запрос содержит всю необходимую информацию; сервер не хранит состояние сессии.
  • Форматы данных — чаще всего JSON или XML.

REST API используется в мобильных приложениях, веб-фронтендах, микросервисах и интеграции систем. На Java самым популярным фреймворком для создания REST API является Spring Boot — он предоставляет готовые аннотации и автоматическую конфигурацию.

2. Подготовка проекта Spring Boot

Для начала вам понадобится:

  • JDK 17 или выше
  • IntelliJ IDEA или любой другой IDE
  • Maven или Gradle

Создадим проект с помощью Spring Initializr. Выберите:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.2.0 (или последняя стабильная)
  • Dependencies: Spring Web, Spring Boot DevTools

Нажмите "Generate" и распакуйте архив. Откройте проект в IDE. Структура будет выглядеть так:

rest-api-demo/
├── src/main/java/com/example/restapidemo/
│   ├── RestApiDemoApplication.java
│   └── controller/
│       └── UserController.java
├── src/main/resources/
│   └── application.properties
└── pom.xml

3. Создание модели данных и контроллера

Создадим простую модель User (класс в пакете model):

package com.example.restapidemo.model;

public class User {
    private Long id;
    private String name;
    private String email;

    public User() {}

    public User(Long id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Геттеры и сеттеры
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

Теперь создадим контроллер UserController в пакете controller. Это сердце нашего API:

package com.example.restapidemo.controller;

import com.example.restapidemo.model.User;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;

@RestController
@RequestMapping("/api/users")
public class UserController {

    private final List<User> users = new ArrayList<>();
    private final AtomicLong counter = new AtomicLong();

    public UserController() {
        // Тестовые данные
        users.add(new User(counter.incrementAndGet(), "Alice", "alice@example.com"));
        users.add(new User(counter.incrementAndGet(), "Bob", "bob@example.com"));
    }

    // GET /api/users — получить всех пользователей
    @GetMapping
    public List<User> getAllUsers() {
        return users;
    }

    // GET /api/users/{id} — получить пользователя по ID
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return users.stream()
                .filter(user -> user.getId().equals(id))
                .findFirst()
                .orElseThrow(() -> new RuntimeException("User not found with id: " + id));
    }

    // POST /api/users — создать нового пользователя
    @PostMapping
    public User createUser(@RequestBody User user) {
        user.setId(counter.incrementAndGet());
        users.add(user);
        return user;
    }

    // PUT /api/users/{id} — обновить пользователя
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
        User user = getUserById(id);
        user.setName(updatedUser.getName());
        user.setEmail(updatedUser.getEmail());
        return user;
    }

    // DELETE /api/users/{id} — удалить пользователя
    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        User user = getUserById(id);
        users.remove(user);
        return "User with id " + id + " deleted successfully";
    }
}

Обратите внимание на аннотации:

  • @RestController — указывает, что класс обрабатывает REST-запросы.
  • @RequestMapping("/api/users") — базовый URL для всех методов.
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping — маппинг HTTP-методов.
  • @PathVariable — извлекает значение из URL.
  • @RequestBody — преобразует JSON из тела запроса в объект Java.

4. Запуск и тестирование API

В файле application.properties можно указать порт (по умолчанию 8080):

server.port=8080

Запустите приложение: в IDE нажмите Run на классе RestApiDemoApplication. Через несколько секунд сервер запустится. Теперь протестируем API.

С помощью браузера или curl:

  • GET http://localhost:8080/api/users — вернёт список пользователей в JSON.
  • GET http://localhost:8080/api/users/1 — вернёт пользователя с id=1.

С помощью Postman: