Dia 2: Estrutura de uma API com Spring
MVC
• Objetivo: Implementar uma estrutura básica de API RESTful.
• Conteúdo:
• Criação de um controlador com métodos @GetMapping, @PostMapping,
@PutMapping, e @DeleteMapping.
• Como manipular requisições e respostas.
• Atividade Prática:
• Crie um controlador que responde a diferentes endpoints (por exemplo,
/produtos).
• Implemente um método que retorne uma lista de produtos (dummy data).
Dia 2: Estrutura de uma API com Spring MVC
Objetivo
Implementar uma estrutura básica de API RESTful usando Spring MVC, incluindo a criação de
controladores que manipulam requisições HTTP.
Conteúdo
1. Criando um Controlador
Um controlador em Spring MVC é responsável por receber as requisições do cliente e retornar uma
resposta. Para criar um controlador básico que responde a diferentes endpoints, você usará as
anotações @GetMapping, @PostMapping, @PutMapping e @DeleteMapping.
• @GetMapping: Usado para manipular requisições HTTP GET.
• @PostMapping: Usado para manipular requisições HTTP POST.
• @PutMapping: Usado para manipular requisições HTTP PUT.
• @DeleteMapping: Usado para manipular requisições HTTP DELETE.
2. Estrutura de um Controlador
Vamos criar um controlador chamado ProdutoController que irá gerenciar produtos.
Atividade Prática
Passo 1: Criar o Controlador
1. Navegue até o diretório src/main/java/com/exemplo/produtoapi (ou onde você
criou seu pacote).
2. Crie uma nova classe chamada ProdutoController.
java
Copiar código
package com.exemplo.produtoapi.controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api/produtos")
public class ProdutoController {
private List<Produto> produtos = new ArrayList<>();
// Método para listar todos os produtos
@GetMapping
public List<Produto> listarProdutos() {
return produtos; // Retorna a lista de produtos
}
// Método para adicionar um novo produto
@PostMapping
public Produto adicionarProduto(@RequestBody Produto produto) {
produtos.add(produto); // Adiciona o produto à lista
return produto; // Retorna o produto adicionado
}
// Método para atualizar um produto
@PutMapping("/{id}")
public Produto atualizarProduto(@PathVariable Long id, @RequestBody Produto
produtoAtualizado) {
// Implementar lógica para atualizar o produto
// Neste exemplo, apenas retornamos o produto atualizado
return produtoAtualizado;
}
// Método para deletar um produto
@DeleteMapping("/{id}")
public String deletarProduto(@PathVariable Long id) {
// Implementar lógica para remover o produto da lista
return "Produto com id " + id + " deletado"; // Retorna uma mensagem
}
}
Passo 2: Criar a Classe Produto
Você também precisará de uma classe Produto para representar os produtos. Crie uma nova classe
Produto no mesmo pacote.
java
Copiar código
package com.exemplo.produtoapi.controller;
public class Produto {
private Long id;
private String nome;
private double preco;
// Construtores, getters e setters
public Produto() {
}
public Produto(Long id, String nome, double preco) {
this.id = id;
this.nome = nome;
this.preco = preco;
}
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;
}
}
Passo 3: Testar a API
Para testar a API, você pode usar ferramentas como Postman ou Insomnia.
1. Listar Produtos:
• Método: GET
• URL: http://localhost:8080/api/produtos
2. Adicionar um Produto:
• Método: POST
• URL: http://localhost:8080/api/produtos
• Body (JSON):
json
Copiar código
{
"id": 1,
"nome": "Produto Exemplo",
"preco": 10.50
}
3. Atualizar um Produto:
• Método: PUT
• URL: http://localhost:8080/api/produtos/1
• Body (JSON):
json
Copiar código
{
"nome": "Produto Atualizado",
"preco": 15.00
}
4. Deletar um Produto:
• Método: DELETE
• URL: http://localhost:8080/api/produtos/1
explique como se eu fosse uma criança de 5 anos as anotaçoes @GetMapping, @PostMapping,
@PutMapping, e @DeleteMapping.
O ChatGPT disse:
ChatGPT
Claro! Vamos imaginar que estamos brincando de um jogo onde você tem uma caixa de brinquedos
e precisa fazer algumas coisas com os brinquedos dentro dela. As anotações @GetMapping,
@PostMapping, @PutMapping e @DeleteMapping são como instruções mágicas que
ajudam a gente a fazer essas coisas.
Imaginando a Caixa de Brinquedos
1. Caixa de Brinquedos: Essa é a sua aplicação. Dentro dela, você tem todos os seus
brinquedos (que são os dados).
As Instruções Mágicas
• @GetMapping:
Imagine que você quer pegar um brinquedo da caixa para brincar. Essa é a instrução que
diz: “Por favor, me mostre os brinquedos que estão na caixa.”
Exemplo: "Me mostre todos os meus carrinhos de brinquedo!"
• @PostMapping:
Agora, vamos imaginar que você tem um novo brinquedo que quer colocar na caixa. Essa
instrução diz: “Por favor, adicione um novo brinquedo na caixa.”
Exemplo: "Coloque meu novo ursinho de pelúcia na caixa!"
• @PutMapping:
Se você tem um brinquedo na caixa, mas quer trocar ele por outro, essa é a instrução que
diz: “Por favor, troque o brinquedo que está aqui por esse novo.”
Exemplo: "Troque meu carrinho vermelho por um carrinho azul!"
• @DeleteMapping:
Agora, se você não quer mais um brinquedo na caixa e quer tirar ele de lá, essa instrução
diz: “Por favor, remova este brinquedo da caixa.”
Exemplo: "Tire meu carro quebrado da caixa!"
Resumindo
• @GetMapping: Pegar ou mostrar algo da caixa (ler dados).
• @PostMapping: Colocar algo novo na caixa (adicionar dados).
• @PutMapping: Trocar ou atualizar algo que já está na caixa (atualizar dados).
• @DeleteMapping: Tirar algo da caixa (remover dados).
Essas instruções ajudam a organizar os brinquedos na caixa, assim como as anotações ajudam a
organizar os dados na sua aplicação! Se precisar de mais ajuda ou explicações, é só avisar!