В какой-то момент произошло наше приложение, чтобы иметь необходимость использовать и интегрировать с внешней службы. Думая об этом появился проект под названием Feign.
В Feign-это проект, который находится в Spring Cloud, он используется для интеграции и использования служб rest.
Он делает потребление clients веб-службы проще. Foi inspirado не требует дооснащения e JAX-RS-2.0. Простоту использования Feign, что нам не нужно писать какой-либо код для вызова службы, определение интерфейса.
@FeignClient нотацию, что делает потребления услуг очень простой.
Eu vou mostrar um exemplo упрощает использование api через cep.com.br/ws/{cep}/json/
Api возвращает json в следующей структуре;
- Мы собираемся добавить две зависимости в нашем пом.xml
spring-cloud-starter-openfeint
org.springframework.cloud spring-cloud-starter-openfeign
spring-cloud-зависимости
org.springframework.cloud spring-cloud-dependencies Hoxton.SR8 pom import
- Параметры Проекта
Нам нужно аннотировать @EnableFeignClients в основной класс проекта, чтобы включить Feign, в случае, если здесь, в классе Application. С этой аннотации можно поиск через интерфейс клиента, которые должны быть использованы.
@SpringBootApplication @EnableFeignClients public class ConsumoApplication { public static void main(String[] args) { SpringApplication.run(ConsumoApplication.class, args); } }
- Создадим класс, который будет возвращать наш объект
public class Endereco { private String cep; private String logradouro; private String complemento; private String bairro; private String localidade; private String uf; private String ibge; private String gia; private String ddd; private String siafi; }
- Мы создадим интерфейс, где @FeignClient будет сделать вызов службы.
Параметры url и name являются обязательными; где: url-адрес базы на службу, которая будет потребляться и name: имя клиента, мы Должны сказать, какой Endepoint в buscarEnderecoPorCep будет использовать;
@FeignClient(url= "https://viacep.com.br/ws/" , name = "viacep") public interface CepService { @GetMapping("{cep}/json") Endereco buscaEnderecoPorCep(@PathVariable("cep") String cep); }
- Теперь просто создать маршрут, который мы будем использовать, чтобы потреблять службы;
@RestController public class CepRestService { @Autowired private CepService cepService; @GetMapping("/{cep}") public ResponseEntitygetCep(@PathVariable String cep) { Endereco endereco = cepService.buscaEnderecoPorCep(cep); return endereco != null ? ResponseEntity.ok().body(endereco) : ResponseEntity.notFound().build(); } }
Готово, теперь ваше приложение использует службу, внешний с несколько строк, и с тем же результатом, что мы с RestTemplate.
Ссылку применения модели в git Пример
Оригинал: “https://dev.to/daienelima/como-consumir-uma-api-na-sua-aplicacao-spring-boot-3p3a”