Coloquei o endereço certinho, tanto lá no código através da anotação “RequestMapping” como dentro do Insomnia, e ainda sim acusa o erro como se não existisse.
Insomnia:
Código da classe de repositório:
package com.higormorais.repository;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Optional;
import org.springframework.stereotype.Repository;
import com.higormorais.model.Produto;
@Repository
public class ProdutoRepository {
private List<Produto> produtos = new ArrayList<>();
private Integer ultimoId = 0;
public List<Produto> obterTodos() {
return produtos;
}
public Optional<Produto> obterPorId(Integer id) {
return produtos.stream().filter(produto -> produto.getId() == id).findFirst();
}
public void adicionar(Produto produto) {
ultimoId++;
produto.setId(ultimoId);
produtos.add(produto);
}
public void deletar(Integer id) {
produtos.removeIf(produto -> produto.getId() == id);
}
public void atualizar(Produto produto) {
Optional<Produto> produtoEncontrado = obterPorId(produto.getId());
if(produtoEncontrado.isEmpty()) {
throw new InputMismatchException("Produto não encontrado");
}
deletar(produto.getId());
produtos.add(produto);
}
}
Código da classe de serviço:
package com.higormorais.service;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.higormorais.model.Produto;
import com.higormorais.repository.ProdutoRepository;
@Service
public class ProdutoService {
@Autowired
private ProdutoRepository produtoRepository;
public List<Produto> obterTodos() {
return produtoRepository.obterTodos();
}
public Optional<Produto> obterPorId(Integer id) {
return produtoRepository.obterPorId(id);
}
public void adicionar(Produto produto) {
produtoRepository.adicionar(produto);
}
public void deletar(Integer id) {
produtoRepository.deletar(id);
}
public void atualizar(Integer id, Produto produto) {
produto.setId(id);
produtoRepository.atualizar(produto);
}
}
Código da classe de controller:
package com.higormorais.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.higormorais.model.Produto;
import com.higormorais.service.ProdutoService;
@RestController
@RequestMapping("/api/produtos")
public class ProdutoController {
@Autowired
private ProdutoService produtoService;
@GetMapping
public List<Produto> obterTodos() {
return produtoService.obterTodos();
}
}
Código da classe principal:
package com.higormorais.usandospring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PrimeiroExemplo1Application {
public static void main(String[] args) {
SpringApplication.run(PrimeiroExemplo1Application.class, args);
}
}
Nota 1: Desculpe-me pela gambiarra cometidas na classe do repositório, mas é que esse código estou fazendo de um curso de back-end para Java com Spring, e o professor do mesmo está fazendo desse jeito, e como eu ainda não sei muitas coisas sobre este framework e o padrão restfull, decidi seguir de acordo com o que estava sendo feito.
Nota 2: Pelo Postman o mesmo erro é acusado.
Nota 3: Também tentei mudar o endereço que está na anotação RequestMapping da classe do controller.