APIs RESTful são amplamente utilizadas para permitir a comunicação entre sistemas de maneira eficiente, escalável e independente de plataforma. O Spring Boot, um dos frameworks mais populares no ecossistema Java, simplifica o desenvolvimento de APIs RESTful, oferecendo ferramentas e convenções que agilizam o processo de criação.
Neste artigo, vamos explorar como criar uma API RESTful básica usando Spring Boot, cobrindo desde a configuração inicial até operações CRUD (Create, Read, Update, Delete).
Configurando o Projeto Spring Boot
Resolva exercícios e atividades acadêmicas
1. Criando o Projeto
Você pode iniciar um projeto Spring Boot de duas maneiras principais:
-
Spring Initializr (Recomendado):
- Acesse start.spring.io.
- Configure o projeto com as dependências necessárias, como
Spring Web
eSpring Data JPA
. - Faça o download do projeto gerado e importe-o no IDE.
-
Manual:
Encontre o professor particular perfeito
- Crie um projeto Maven/Gradle.
- Adicione as dependências no arquivo
pom.xml
oubuild.gradle
.
2. Dependências Básicas no pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
Criando a Estrutura da API RESTful
1. Entidade JPA
Crie uma classe que represente o modelo de dados.
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Double preco;
// Getters e Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
}
2. Repositório
Use JpaRepository
para manipular a entidade.
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProdutoRepository extends JpaRepository<Produto, Long> {
}
3. Controlador
Implemente as operações REST usando a anotação @RestController
.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/produtos")
public class ProdutoController {
@Autowired
private ProdutoRepository repository;
@GetMapping
public List<Produto> listarTodos() {
return repository.findAll();
}
@GetMapping("/{id}")
public ResponseEntity<Produto> buscarPorId(@PathVariable Long id) {
return repository.findById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
public Produto criar(@RequestBody Produto produto) {
return repository.save(produto);
}
@PutMapping("/{id}")
public ResponseEntity<Produto> atualizar(@PathVariable Long id, @RequestBody Produto produto) {
return repository.findById(id)
.map(existente -> {
existente.setNome(produto.getNome());
existente.setPreco(produto.getPreco());
Produto atualizado = repository.save(existente);
return ResponseEntity.ok(atualizado);
})
.orElse(ResponseEntity.notFound().build());
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deletar(@PathVariable Long id) {
return repository.findById(id)
.map(existente -> {
repository.delete(existente);
return ResponseEntity.noContent().build();
})
.orElse(ResponseEntity.notFound().build());
}
}
Testando a API RESTful
1. Usando Postman ou Insomnia
- GET
/api/produtos
: Lista todos os produtos. - POST
/api/produtos
: Cria um novo produto. Corpo JSON:{ "nome": "Notebook", "preco": 3000.0 }
- PUT
/api/produtos/{id}
: Atualiza um produto existente. - DELETE
/api/produtos/{id}
: Exclui um produto.
2. Banco de Dados H2
- Configure o H2 no arquivo
application.properties
:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
- Acesse a interface web do H2 em
http://localhost:8080/h2-console
.
Boas Práticas
- Validação de Dados: Use
@Valid
e anotações como@NotNull
para validar os campos do modelo. - Tratamento de Exceções: Crie um manipulador global para erros com
@ControllerAdvice
. - Documentação: Use o Swagger para documentar e testar a API.
- Segurança: Configure autenticação e autorização com Spring Security.
Com o Spring Boot, criar APIs RESTful é um processo simples e eficiente. Desde a configuração inicial até a implementação das operações CRUD, o framework oferece tudo o que você precisa para desenvolver APIs robustas e escaláveis. Experimente essas técnicas e leve suas aplicações ao próximo nível!