Сопоставление объектов с использованием ModelMapper, как я могу сопоставить несколько различных объектов - PullRequest
0 голосов
/ 14 января 2019

Итак, у меня есть два API, которые будут общаться. API A будет отправлять запросы в API B и получать ответ от API B. Прежде чем API A отправит запрос в API B, он должен сопоставить запрос для API B, чтобы понять. Примерно так:

ModelMapper modelMapper = new ModelMapper();

public DestinationClass sendRequest(MyRequest myReq){
    DestinationClass destReq = modelMapper.map(myReq, DesinationClass.class);
    return destReq;
}

Этот метод вернет правильный формат запроса, чтобы он мог отправить его в API B.

Тогда у меня будет способ принять ответ от API B таким образом, чтобы API A мог понимать и использовать данные. Такой метод:

public MyResponse receiveResponse(DestinationClass destResp){
    MyResponse myResp = modelMapper.map(destResp, MyResponse.class);
    return resp;
}

Проблема в том, что API B принимает разные типы запросов (около 6 или 7 разных типов). Таким образом, запросы, поступающие в API B, не всегда будут форматироваться одинаково, иногда они будут иметь разные поля данных. Так что «DestinationClass» в моем коде выше будет отличаться. Есть ли способ справиться с этим? Есть ли способ, которым я могу просто сопоставить MyRequest и MyResponse с любым форматом, который API-интерфейс B собирается использовать? Например, есть ли способ передать "DestinationClass" в качестве параметра, чтобы использовать эти методы с различными типами объектов? В частности, метод sendRequest. Если бы у меня был класс Map, содержащий эти методы, смогу ли я передать «DestinationClass», чтобы использовать его в качестве возвращаемого типа? Или мне просто нужно будет создать метод sendRequest и метод receiveResponse для каждого типа запросов / ответов?

...