Como Criar e Usar APIs RESTful
Foto de Luis P.
Por: Luis P.
16 de Janeiro de 2025

Como Criar e Usar APIs RESTful

Java com Spring Boot

Java Springboot Java Web

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

1. Criando o Projeto

Você pode iniciar um projeto Spring Boot de duas maneiras principais:

  1. Spring Initializr (Recomendado):

    • Acesse start.spring.io.
    • Configure o projeto com as dependências necessárias, como Spring Web e Spring Data JPA.
    • Faça o download do projeto gerado e importe-o no IDE.
  2. Manual:

    • Crie um projeto Maven/Gradle.
    • Adicione as dependências no arquivo pom.xml ou build.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

  1. GET /api/produtos: Lista todos os produtos.
  2. POST /api/produtos: Cria um novo produto. Corpo JSON:
    {
        "nome": "Notebook",
        "preco": 3000.0
    }
    
  3. PUT /api/produtos/{id}: Atualiza um produto existente.
  4. 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

  1. Validação de Dados: Use @Valid e anotações como @NotNull para validar os campos do modelo.
  2. Tratamento de Exceções: Crie um manipulador global para erros com @ControllerAdvice.
  3. Documentação: Use o Swagger para documentar e testar a API.
  4. 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!

Luis P.
Luis P.
Boa Ventura / PB
Responde em 20 min
Identidade verificada
1ª hora grátis
5,0
nota média
1
avaliação
R$ 40
por hora
Graduação: Licenciatura em Computação (UEPB - Universidade Estadual da Paraíba)
Java para Web, Java - Springboot, Testes em Java
Professor de informática, português e inglês. Formado em computação e letras inglês/português. Servidor público aprovado em 3 concursos.

Confira artigos similares

Aprenda sobre qualquer assunto