Как написать 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. Это веб-инструмент, который генерирует заготовку проекта.
- Перейдите на start.spring.io.
- Выберите: Project: Maven, Language: Java, Spring Boot: 3.x.x.
- В поле Group введите
com.example, в Artifact —todoapi. - Нажмите Add Dependencies и добавьте Spring Web.
- Нажмите Generate — скачается ZIP-архив с проектом.
- Распакуйте архив и откройте папку в 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,@