Разработка интерфейса для вызова внешнего вызова Сервиса из одного Сервиса - PullRequest
0 голосов
/ 21 января 2020

У меня есть 2 службы A и B

Службе A необходимо сделать HTTP-вызов в Службу B и получить ответ

Я не совсем понимаю, как разработать интерфейс в Службе A, который бы вызвать API службы B

ПОДХОД 1

DeliveryClient. java

public interface DeliveryClient {
    PostNotificationResponse sendNotifcation(PostNotificationRequest request);
 }

DeliveryClientImpl. java

class DeliveryClientImpl implements  DeliveryClient{

   private static String baseEndPoint = "http://example";

   public DeliveryClientImpl() {

   }

   public PostNotificationResponse sendNotifcation(PostNotificationRequest request) {

     String postNotificationEndpoint = new StringBuilder(baseEndpoint).append("/send")
      // make the HTTP call

     return response
   }

}

ПОДТВЕРЖДЕНИЯ ПОДХОДА 1

  • Запрос интерфейса и ответ привязаны к PostNotificationRequest и PostNotificationResponse

  • В будущем, если Служба A будет разговаривать со Службой C вместо B, будет трудно вносить изменения при таком подходе

ПОДХОД 2

Design generi c классы запросов и ответов

abstract class BaseRequest {

}

abstract class BaseResponse {

 }

 class NotificationRequest extends BaseRequest {

}
 class NotificationResponse extends BaseResponse {

}

DeliveryClient. java

public interface DeliveryClient {
    <R extends BaseResponse> R sendNotification(BaseRequest<T> request);
 }

DeliveryClientImpl . java

class DeliveryClientImpl implements DeliveryClient{

   private static String baseEndPoint = "http://example";

   public DeliveryClientImpl() {

   }

   public PostNotificationResponse sendNotifcation(PostNotificationRequest request) {

     String postNotificationEndpoint = new StringBuilder(baseEndpoint).append("/send")
      // make the HTTP call

     return response
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...