Como usar o Feign Client do Spring Cloud para integrações com API Oficial da Marvel

Antes de Começar

Recomendo a leitura do artigo abaixo antes de iniciar:

Esse GIF é um Easter Egg. Poucos entenderão.

Introdução

O principal objetivo do Feign Client é criar clientes HTTP de forma simples, sem precisar escrever muito código fonte. Normalmente um cliente HTTP é usado em chamadas para outros microsserviços quando trabalhamos com orquestração ou quando chamamos API’s, endereços externos ou integração com outros sistemas que usam o protocolo HTTP.

No nosso exemplo, vamos mostrar como utilizar o Feign Client para chamar a API Oficial da Marvel.

Exemplo de código

Para entender o quanto o Feign Client facilita o desenvolvimento, podemos analisar o código abaixo:

Temos somente uma interface com a anotação @FeignClient com o endereço para a API Oficial da Marvel.

O método characterById possui anotações conhecidas quando desenvolvemos um Controller.

Quando executamos a aplicação, o Spring utiliza essa interface e cria uma implementação de código para que possamos efetuar uma chamada para o endereço especificado no FeignClient.

Gerando o código

A partir de um arquivo com a especificação Swagger, podemos gerar o client do Feign Client e seus respectivos DTO.

Usar o Swagger da API da Marvel deste endereço:

https://speca.io/speca/marvel-public-api-v1

Para isso usamos o Swagger Codegen para geração de código fonte do Feign Client:

wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.29/swagger-codegen-cli-3.0.29.jar -O swagger-codegen-cli.jarjava -jar swagger-codegen-cli.jar generate -i marvel-public-api-v1-swagger.json -l spring --library spring-cloud -o marvel

No exemplo acima, sempre especifique a versão mais recente do Swagger Codegen.

Documentação do Swagger Codegen:

Outro Easter Egg que inferno.

Configurando a Aplicação

Incluir a dependência do Feign Client no seu pom.xml:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.0.5</version>
</dependency>

No SpringBootApplication da sua aplicação incluir a anotação @EnableFeignClients:

Na utilização, efetuar o inject com @Autowired:

Tratamento de Erros

Os tratamentos de erro do Feign Client poderão ser feitos dentro do seu RestControllerAdvice, interceptando as exceções FeignException e FeignClientException.

Essas exceções, retornam os erros com os seus respectivos status code, que serão repassados para a camada do Controller:

Repositório do GitHub

O código fonte desse artigo:

Até a próxima!

Fechando com mais um Easter Egg.

--

--

📺+ de 20 anos gerando código fonte em Java, Arquiteto Java, Desenvolvedor Java, Professor Universitário e Colecionador de Videogames

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store