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:

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:
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:

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!
