Можно ли иметь несколько моделей для REST API? - PullRequest
0 голосов
/ 28 августа 2018

В моем проекте есть одна модель для пользователя в базе данных. Теперь у меня есть несколько запросов, чтобы получить конкретных пользователей. Я могу получить bestUsers, ответ которого содержит список JSON с меньшим количеством полей (только те, которые необходимы) - список этих пользователей рассчитывается по алгоритму на стороне сервера. Теперь на стороне клиента: у меня должно быть две модели User - для общего пользования и UserBest - для составления списка лучших пользователей или только одна модель и сериализация только полей, которые появляются в JSON (остальные будут нуль).

Я пишу на Java и использую библиотеку модернизации.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если вы хотите, чтобы клиент был строго типизирован и всегда был синхронизирован с сервером, то есть любые «незаконные» данные были бы признаком ошибки, создайте несколько моделей и строго проанализируйте запросы.

Если вы хотите добавить данные в модель бэкэнда без необходимости одновременного изменения клиента или пропуска данных, вы можете использовать одну модель, которая игнорирует любые отсутствующие или дополнительные данные.

Оба варианта возможны в зависимости от ваших потребностей. В серьезном приложении промышленного уровня вы, вероятно, предпочтете строгую типизацию первого варианта, в «менее серьезном» приложении последний может сэкономить вам немного времени и печатать (и развертывать, если вы хотите сначала добавить данные в бэкэнд-модель). и фронтенд позже).

Я предполагаю, что "модель" в бэкэнде относится к ответу API, поскольку фактическая модель может быть чем угодно, и вы только возвращаете представления модели в DTO.

0 голосов
/ 28 августа 2018

По моему мнению, вполне нормально, чтобы ваша модель была в Back-end и Front-end. Кроме того, редко, чтобы Front-end-модель была равна Back-end-модели, потому что каждая из них представляет собой абстракцию разных вещей.

Внутренняя модель

Содержит логическую и общую абстракцию сущности

Модель внешнего интерфейса

Представляет объект во внешнем интерфейсе. Многие из этих моделей похожи на Back-End, но они редко бывают одинаковыми, плюс в Front-End нам могут понадобиться дополнительные объекты, используемые для взаимодействия с пользователем
...