Como consumir api usando OpenFeign
Neste tutorial veremos como consumir uma api no Java utilizando o OpenFeign e o Spring.
O que é o Spring?
O Spring é um framework open source para a plataforma Java, cujo objetivo é facilitar o desenvolvimento de aplicações em Java.
O que é o OpenFeign?
O Feign é um cliente Binder do java para requisições Http que foi inspirado no Retrofit, JAXRS-2.0 e WebSocket.
Seu principal objetivo é facilitar a complexidade nas requisições de apis.
Requisitos para execução deste tutorial:
- Java;
- Maven;
Como consumir api usando OpenFeign.
Antes de iniciar a codificação, vamos criar e configurar o nosso projeto, para isso vamos utilizar o spring initializr
para montar a estrutura do nosso projeto. Para isso basta acessar o site spring initializr.
Com o site do spring initializr aberto vamos adicionar as dependências necessárias para execução do projeto. Dependências utilizadas:
spring-boot-starter-web
spring-cloud-starter-openfeign
A figura abaixo mostra como ficou a configuração no spring initializr
:

Depois de ter configurado o projeto vamos para codificação:
Primeiro vamos adicionar a anotação @EnableFeignClients
a classe principal da aplicação, que ira habilitar a utilização do feignclient:
@SpringBootApplication @EnableFeignClients public class OpenFeignApplication {
public static void main(String[] args) {
SpringApplication.run(OpenFeignApplication.class, args);
}
}
Após, vamos criar uma interface chamada CepService
que conterá o método com as configurações para o consumo da api, para os testes vamos utilizar a api do viacep
, segue o código com a implementação:
@FeignClient(name = "viacep", url = "https://viacep.com.br/ws" )
static interface CepService {
@GetMapping("{cep}/json")
String getEnderecoPorCep(@PathVariable("cep") String cep);
}
Com o código acima, já conseguimos consumir a api do via cep, para isso basta chamar o metódo getEnderecoPorCep()
da interface CepService
que criamos, passando o número do cep como parâmetro. Segue abaixo um exemplo de como podemos utilizar essa interface:
package com.example.OpenFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@SpringBootApplication
@EnableFeignClients
public class OpenFeignApplication implements CommandLineRunner{
public static void main(String[] args) {
SpringApplication.run(OpenFeignApplication.class, args);
}
@FeignClient(name = "viacep", url = "https://viacep.com.br/ws" )
static interface CepService {
@GetMapping("{cep}/json")
String getEnderecoPorCep(@PathVariable("cep") String cep);
}
@Autowired
private CepService cepService;
@Override
public void run(String... args) throws Exception {
System.out.println("Iniciando projeto .....");
String resposta = cepService.getEnderecoPorCep("01001000");
System.out.println("Resposta da api viacep: ");
System.out.println(resposta);
}
}
Uma breve explicação do código acima. No código acima implementei o CommandLineRunner
, para executar a chamada da api assim que o programa iniciar e sobrecrevi o metódo run()
com a lógica necessária para chamada do CepService
.
Saída da console:
Iniciando projeto .....
Resposta da api viacep:
{
"cep": "01001-000",
"logradouro": "Praça da Sé",
"complemento": "lado ímpar",
"bairro": "Sé",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
}
Este foi um breve tutorial de como consumir uma api utlizando o spring de forma rápida e fácil, abaixo segue o link do código fonte da aplicação criada.
Segue um vídeo de Exemplo:
Código fonte do tutorial:
Referências: