Como escrever uma API REST em Java em 30 minutos: guia passo a passo
Criar uma API REST é uma das habilidades essenciais do desenvolvedor Java moderno. REST (Representational State Transfer) permite construir serviços web leves, escaláveis e compreensíveis. Neste guia, criaremos uma API REST completa em 30 minutos usando Spring Boot. Você aprenderá a configurar o projeto, criar endpoints para trabalhar com usuários, processar JSON e testar a API via Postman ou navegador.
1. O que é uma API REST e para que serve?
API REST é um estilo arquitetural onde cliente e servidor trocam dados por meio de requisições HTTP. Os princípios básicos do REST:
- Recursos — cada objeto (usuário, produto, pedido) é representado por uma URL.
- Métodos HTTP — GET (leitura), POST (criação), PUT (atualização), DELETE (remoção).
- Stateless — cada requisição contém todas as informações necessárias; o servidor não armazena estado de sessão.
- Formatos de dados — geralmente JSON ou XML.
APIs REST são usadas em aplicativos móveis, front-ends web, microsserviços e integração de sistemas. Em Java, o framework mais popular para criar APIs REST é o Spring Boot — ele fornece anotações prontas e configuração automática.
2. Preparação do projeto Spring Boot
Para começar, você precisará de:
- JDK 17 ou superior
- IntelliJ IDEA ou qualquer outra IDE
- Maven ou Gradle
Criaremos um projeto usando Spring Initializr. Selecione:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0 (ou a última versão estável)
- Dependencies: Spring Web, Spring Boot DevTools
Clique em "Generate" e descompacte o arquivo. Abra o projeto na IDE. A estrutura será assim:
rest-api-demo/├── src/main/java/com/example/restapidemo/│ ├── RestApiDemoApplication.java│ └── controller/│ └── UserController.java├── src/main/resources/│ └── application.properties└── pom.xml3. Criação do modelo de dados e do controller
Criaremos um modelo simples User (classe no pacote 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; }
// Getters e Setters 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; }}Agora criaremos o controller UserController no pacote controller. Este é o coração da nossa 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() { // Dados de teste users.add(new User(counter.incrementAndGet(), "Alice", "alice@example.com")); users.add(new User(counter.incrementAndGet(), "Bob", "bob@example.com")); }
// GET /api/users — obter todos os usuários @GetMapping public List<