, хотя можно иметь методы контроллера, которые возвращают только данные Json, существует ряд соображений, когда вы хотите предоставить эти данные за пределами приложения пользовательского интерфейса.
Поскольку у вас есть приложение MVC, я ожидаю, что у вас есть пользователи и способ входа в систему. Ваши контроллеры, скорее всего, будут каким-то образом защищены, что работает для внутренних пользователей приложения. Теперь вы хотите добавить один метод, который фактически становится API, доступным вне приложения, и вызовы к нему должны будут как-то аутентифицироваться.
Я бы предложил разделить это. Вы можете создать отдельный проект, который является WebAPI, в том же решении. Код, который подготавливает данные, может находиться в библиотеке классов, на которую можно ссылаться как в проектах MVC, так и в WebAPI.
Ваше приложение MVC может вызвать его, а затем вернуть представление с этими данными, WebAPI вызывает его и просто возвращает данные. Теперь вы можете выбрать способ защиты своего API, возможно, с помощью Identity Server или каким-либо другим способом, и вы можете продолжать добавлять к нему что-либо, не затрагивая уровень пользовательского интерфейса.
Ваш второй вариант - заставить приложение MVC использовать API, когда ему необходимо получить данные, чтобы и ваши публичные клиенты, и пользовательский интерфейс использовали одно и то же.
Какой бы вариант вы ни использовали, идея состоит в том, чтобы ничего не дублировать и в то же время предоставлять нужные вам уровни безопасности.