Tecnologia
Integração de APIs com o OpenFeign
2 minutos 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!!!