Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

O endpoint da controller não é encontrado

Olá. Segui todos os passos do vídeo 4 do capítulo 1 do curso de Microservices com Spring Cloud. O projeto está compilando e subindo, porém ao fazer a requisição POST para a API, o endpoint não é encontrado. Segue abaixo o código e o erro apresentado:

Código da Controller

@RestController
@RequestMapping("/compra")
public class CompraController {

    @RequestMapping(method = RequestMethod.POST)
    public void realizaCompra(@RequestBody CompraDTO compra){
        System.out.println("Deu certo");
        System.out.println(compra.toString());
    }

}

endpoint:


http://localhost:8080/compra

erro:

{
    "timestamp": "2020-08-12T02:47:10.585+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/compra"
}
4 respostas

Olá Raphael, tudo bem com você?

Você conseguiu resolver o seu problema ? Dando uma olhada em seu código não há nada de errado, é até um pouco bizarro não estar funcionando

Poderia fazer upload do projeto no github para eu testar? Mas sinceramente me parece mais um bug que deu na hora

Fico no aguardo :)

Olá Geovani. Desculpe a demora. Fiquei um pouco sem tempo nesses últimos dias, mas agora vou voltar a olhar esse projeto. Eu coloquei ele no github sim. Segue o link: https://github.com/raphapfeifer/loja

Obrigado!

solução!

Opa Raphael, agora ficou mais fácil :)

Antes de mais nada, eu vi que você adicionou algumas bibliotecas a mais, acredito que para tentar solucionar o problema, correto?

Na minha opinião, você pode estar tirando todas elas, pois foi uma coisa bem mais simples haahhaha

A nossa aplicação tem uma anotação bem importante que é a

@SpringBootApplication

Que é uma anotação que vale por outras 3:

  • @Configuration
  • @EnableAutoConfiguration
  • @ComponentScan

A grande questão é que a @ComponentScan por padrão é varrer a pasta atual, e as subpastas, para encontrar @Bean, @Controller, @Service, etc...

Entretanto, da maneira como você organizou:

  • controller
    • CompraController
  • dto
    • CompraDTO
  • loja
    • LojaApplication.java

Ele não tem nada para escanear, pois dentro da pasta loja não há mais nada, ele não volta uma pasta para procurar :)

Então na verdade a estrutura tem que ser a seguinte:

  • loja
    • LojaApplication.java
    • dto
      • CompraDTO
    • controller
      • CompraController

Dessa forma a LojaApplication consegue fazer o scan das pastas dto e controller e encontrar nossos endpoints :)

Conseguiu Compreender?

Abraços e Bons Estudos!

Olá Geovani. Eu entendi sim, nem percebi esse erro. Já arrumei. Muito obrigado!