Как организовать web api для веб-и мобильных звонков?
У меня есть веб-api, служащий бэкендом для мобильных и веб-приложений.Как я могу организовать свои действия и модели контроллеров.Таким образом, чтобы было легко справиться с будущей работой.
Например
1-один и тот же контроллер и другое имя действия для мобильных устройств и интернета, например
api/Customer/GetCustomer_web api/Customer/GetCustomer_mobile
2-тот же контроллер и то же действие, но другой параметр
api/Customer/GetCustomer?app=web api/Customer/GetCustomer?app=mobile
3-Другой Контроллер
api/Customer_web/GetCustomer api/Customer_mobile/GetCustomer
4-что-то еще
Кроме того, что является лучшей практикой
Что я уже пробовал:
Пробовал различные методы реализации, упомянутые в вопросе, но для выполнения этой задачи нужна лучшая практика.
Richard Deeming
Почему вам нужно возвращать разные данные в зависимости от вызывающего абонента?
Member 9129971
более ясное слово-viewmodel not data, у меня есть разные viewmodels для web и mobile, например, некоторые поля показаны в web, но не показаны в mobile , есть разные представления как для mobile , так и для web, вы бы сказали , что для этого я могу просто создать метод с каким-то другим именем, но проблема в том, что api построен таким образом, что если я создам другие методы, то это будет беспорядок для обслуживания, поэтому мне нужно решение, не теряя никаких предыдущих усилий.
Richard Deeming
Но какие поля вы показываете, а какие нет, - это проблема пользовательского интерфейса.
В терминах MVVM данные, возвращаемые из API, являются моделью. Вы используете модель представления в интерфейсном приложении, чтобы адаптировать эту модель к представлению.
Member 9129971
да модель например:для интернета у нас есть модели, имеющие поля A,B,С,D и для Андроид у нас есть такая же модель в наличие,б (здесь С,D имеют значение null).
Richard Deeming
Нет. У вас есть одна и та же модель для обоих. Вы используете модель представления, чтобы решить, какие поля будут отображаться, а какие нет, и адаптировать модель к представлению.
У вас не было бы отдельных таблиц базы данных для "веб-клиентов" и "мобильных клиентов"; так зачем же иметь для них отдельные модели?