Ir para o conteúdo

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:

https://youtu.be/zRZuZrwYYc0

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

Outras publicações