Как написать REST API на Java за 30 минут: для начинающих

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

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

Начать курс

Как написать REST API на Java за 30 минут: для начинающих

Создание REST API — один из ключевых навыков современного разработчика. Если вы только начинаете изучать Java и хотите быстро создать свой первый веб-сервис, это руководство для вас. Мы пройдем путь от установки инструментов до работающего API, который можно тестировать в браузере или Postman. Весь процесс займет не более 30 минут.

В этой статье мы используем Spring Boot — самый популярный фреймворк для создания веб-приложений на Java. Он берет на себя всю рутинную настройку, позволяя сосредоточиться на логике. В результате вы получите простое API для управления списком задач (Todo List).

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

REST (Representational State Transfer) — это архитектурный стиль для построения веб-сервисов. REST API работает поверх протокола HTTP и использует стандартные методы:

  • GET — получение данных
  • POST — создание новой записи
  • PUT — обновление существующей записи
  • DELETE — удаление записи

Данные обычно передаются в формате JSON. REST API используется повсеместно: от мобильных приложений до микросервисной архитектуры. Освоив его, вы сможете создавать серверную часть для любого клиента.

Шаг 1: Подготовка окружения

Для работы нам понадобятся три вещи. Убедитесь, что они установлены на вашем компьютере.

1.1. JDK (Java Development Kit)

Скачайте и установите JDK 17 или новее с официального сайта Oracle или используйте OpenJDK. Проверьте установку командой в терминале:

java -version

1.2. IntelliJ IDEA (Community Edition)

Это бесплатная среда разработки, идеально подходящая для Java. Скачайте ее с официального сайта.

1.3. Postman (опционально)

Инструмент для тестирования API. Скачать можно с postman.com. На первых порах можно обойтись браузером.

Шаг 2: Создание проекта Spring Boot

Самый быстрый способ — использовать Spring Initializr. Это веб-инструмент, который генерирует заготовку проекта.

  1. Перейдите на start.spring.io.
  2. Выберите: Project: Maven, Language: Java, Spring Boot: 3.x.x.
  3. В поле Group введите com.example, в Artifact — todoapi.
  4. Нажмите Add Dependencies и добавьте Spring Web.
  5. Нажмите Generate — скачается ZIP-архив с проектом.
  6. Распакуйте архив и откройте папку в IntelliJ IDEA.

Структура проекта будет выглядеть так:

  • src/main/java/com/example/todoapi/ — основной код
  • src/main/resources/application.properties — настройки
  • pom.xml — файл сборки Maven

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

Теперь мы напишем код. Сначала создадим простую модель — класс TodoItem.

3.1. Класс модели

Создайте новый Java-класс в пакете com.example.todoapi с именем TodoItem.java:

package com.example.todoapi;

public class TodoItem {
    private Long id;
    private String title;
    private boolean completed;

    // Конструктор по умолчанию
    public TodoItem() {}

    // Конструктор с параметрами
    public TodoItem(Long id, String title, boolean completed) {
        this.id = id;
        this.title = title;
        this.completed = completed;
    }

    // Геттеры и сеттеры
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public boolean isCompleted() {
        return completed;
    }

    public void setCompleted(boolean completed) {
        this.completed = completed;
    }
}

3.2. Класс контроллера

Теперь создадим REST-контроллер. Создайте класс TodoController.java в том же пакете:

package com.example.todoapi;

import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("/api/todos")
public class TodoController {

    private final List<TodoItem> todos = new ArrayList<>();
    private final AtomicLong counter = new AtomicLong();

    // GET: получить все задачи
    @GetMapping
    public List<TodoItem> getAllTodos() {
        return todos;
    }

    // POST: создать новую задачу
    @PostMapping
    public TodoItem createTodo(@RequestBody TodoItem todo) {
        todo.setId(counter.incrementAndGet());
        todos.add(todo);
        return todo;
    }

    // GET: получить задачу по ID
    @GetMapping("/{id}")
    public TodoItem getTodoById(@PathVariable Long id) {
        return todos.stream()
                .filter(t -> t.getId().equals(id))
                .findFirst()
                .orElse(null);
    }

    // PUT: обновить задачу
    @PutMapping("/{id}")
    public TodoItem updateTodo(@PathVariable Long id, @RequestBody TodoItem updatedTodo) {
        TodoItem existing = getTodoById(id);
        if (existing != null) {
            existing.setTitle(updatedTodo.getTitle());
            existing.setCompleted(updatedTodo.isCompleted());
        }
        return existing;
    }

    // DELETE: удалить задачу
    @DeleteMapping("/{id}")
    public String deleteTodo(@PathVariable Long id) {
        todos.removeIf(t -> t.getId().equals(id));
        return "Task with ID " + id + " deleted";
    }
}

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

  • @RestController — говорит Spring, что этот класс обрабатывает HTTP-запросы
  • @RequestMapping("/api/todos") — базовый URL для всех методов
  • @GetMapping, @

Блоги

Рекомендаций по книгам