#java #spring #sdk #spring-cloud-feign #feign
Вопрос:
У меня есть служба с классами контроллеров Spring Boot, каждый из которых реализует интерфейс, все они заключены в «api.jar». Другой человек создает другую службу, которая является http-клиентом первой службы.
Каковы подходящие варианты использования симуляции:
- В api.jar интерфейсы снабжены аннотациями, чтобы кто-то, создающий внешнюю службу, мог использовать api.jar чтобы автоматически сгенерировать фиктивный клиент
- Или создатель внешнего сервиса знает спецификацию API и создает свои собственные симулированные аннотированные интерфейсы, полузеркалирующие api.jar (таким образом, они могут либо соответствующим образом заполнить аннотацию @FeignClient, либо включить URI в метод контроллера)
- Или, в api.jar интерфейсы снабжены аннотациями для симуляции, и владелец сервера создает и публикует SDK, который обертывает создание клиента симуляции вручную следующим образом,
FirstControllerAPI client = Feign.builder()
.decoder(new GsonDecoder())
.target(FirstController.class, "https://api.github.com");
Моя главная путаница заключается в том, что № 1 и № 3 имеют наибольший смысл, но в учебных пособиях, похоже, описывается № 2, что не кажется логичным из-за зеркального отображения.
Независимо от реализации SDK, сервер будет поддерживать обратную совместимость, и создание SDK просто для удобства интеграции. Доступ к конечной точке http всегда можно получить вручную.
Заранее спасибо за любые советы!