Требуется ли отдельному проекту API копия MVC ViewModels для сопоставления?

#asp.net-mvc #viewmodel #asp.net-core-webapi

#asp.net-mvc #viewmodel #asp.net-core-webapi

Вопрос:

вероятно, для вас это просто. Я просто немного запутался.

В принципе, у меня есть 2 отдельных проекта в рамках одного решения. Мой MVC и мой API. Мне было интересно узнать о сопоставлении модели представления и о том, как / где это происходит.

Насколько я понимаю, API вернет данные домена, сопоставит их с моделью представления и вернет в MVC. Означает ли это, что проектам API и MVC нужны одинаковые классы моделей представления? API должен иметь возможность, например, сопоставлять DomainModelA с ViewModelA и отправлять его в проект MVC.

Затем MVC необходимо будет принять объект ViewModelA, переданный из API. Однако, поскольку это отдельные проекты, проект MVC не «знает», что такое ViewModelA, пока я не создам идентичный класс для проекта MVC.

Это звучит как большое дублирование кода, поэтому я, без сомнения, что-то здесь недопонимаю.

Любая помощь приветствуется. Извините, если это глупый вопрос, но эй, я здесь, чтобы учиться: P

Я, вероятно, мог бы объяснить это лучше, если бы знал больше об этой теме.

Заранее спасибо.

Комментарии:

1. вы можете определить другой проект, который содержит общие классы, используемые как в api, так и в проекте mvc

2. Разве это не означает, что ни API, ни MVC не могут «видеть» классы ViewModel, поскольку они не находятся ни в одном из 2 проектов?

3. просто пример. проверки на стороне api разные, а на веб-стороне mvc, которую вы использовали, viewmodel имеет отдельную проверку. лучше использовать разные модели для api и web

4. Вы можете сослаться на общий проект (например, назовите его CommonModel). Что касается проверки, вы можете использовать fluentvalidation, который может быть интегрирован с asp.net mvc и api.

5. Как вы будете запрашивать веб-api у mvc, отправляя запрос? Если mvc и web api являются отдельными проектами, и вы не хотите предоставлять все модели из web api для просмотра, вам следует определить отдельную модель представления для сопоставления в них, даже если они могут иметь один и тот же класс.