Blog > Tecnologia > Integração de APIs com o OpenFeign

Integração de APIs com o OpenFeign

11/02/2021
  • 2 min. de leitura
  • Fala, galera!!! Quantas vezes você já precisou fazer integração de backend para backend?

    Pois é, muitos devs estão bem acostumados a criar suas integrações utilizando o tão conhecido RestTemplate, mas dessa vez eu decidi fazer um pequeno artigo mostrando o quão fácil e simples é criar uma integração utilizando Spring Cloud OpenFeign. Isso mesmo! Você vai ver o quão simples é fazer uma integração de APIs utilizando esse cara.

    Então, vamos lá! Criei dois projetos com essas libs do Spring:

    • Lombok para diminuir a quantidade de códigos que vamos escrever
    • OpenFeign para fazer de fato a nossa integração entre os dois projetos
    • Spring Web só para subir o servidor Apache Tomcat

    Feito isso, vamos pegar o nosso projeto chamado aula e criar um simples endpoint com o seguinte código:

    
    package exemplointegracao.aula;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("usuario")
    public class UsuarioController {
    
        @GetMapping
        public UsuarioResponse retornaUsuario(){
            return UsuarioResponse.builder().id(1L).nome("Nataniel Paiva").idade(29).build();
        }
    
    }

    Como na controller estamos usando o UsuarioResponse, segue o código de criação do UsuarioResponse:

    package exemplointegracao.aula;
    
    import lombok.Builder;
    import lombok.Data;
    
    @Data
    @Builder
    public class UsuarioResponse {
    
        private Long id;
        private String nome;
        private int idade;
    }

    Pronto! Vamos subir o nosso primeiro projeto utilizando o spring-boot:run e ele estará rodando na porta 8080.

    Agora vamos ao segundo projeto que eu batizei de aula2. Nesse projeto nós vamos mudar a porta no application.properties usando o server.port=5000 e vamos configurar o projeto para utilizar o OpenFeign. Veja a classe abaixo:

    package exemplointegracao.aula2;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    
    @SpringBootApplication
    @EnableFeignClients // adicionar essa annotation
    public class Aula2Application {
    
    	public static void main(String[] args) {
    		SpringApplication.run(Aula2Application.class, args);
    	}
    
    }

    Depois disso vamos criar a nossa interface de acesso para a outra API, lembrando que o ideal é utilizar propriedades e não colocar na unha, assim como fiz nesse exemplo, como é para ser o mais didático possível coloquei na unha:

    package exemplointegracao.aula2;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @FeignClient(name = "usuario", url = "http://localhost:8080/usuario")
    public interface UsuarioAula1 {
        @RequestMapping(method = RequestMethod.GET, value = "/")
        UsuarioResponse retornaUsuario();
    }

    Pronto! Feito isso, basta utilizar a nossa interface em um endpoint e veremos o resultado:

    package exemplointegracao.aula2;
    
    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;
    
    @RestController
    @RequestMapping("usuario2")
    public class UsuarioController {
    
        @Autowired
        UsuarioAula1 usuarioAula1;
    
        @GetMapping
        public UsuarioResponse retornaUsuario(){
            return usuarioAula1.retornaUsuario();
        }
    
    }

    Se acessarmos a URL http://localhost:5000/usuario2 com os dois projetinhos rodando, vamos ter o seguinte resultado:

    Viu como é simples integrar APIs utilizando esse cara? Caso queira ver os códigos desse artigo, basta acessar:

    https://github.com/natanielpaiva/exemplo-integracao-apis

    Se mesmo assim ainda ficou com dúvida, assista esse vídeo:

    Espero ter ajudado alguém! Até a próxima!!!

    Gostou? 7
    Compartilhe esse post: