Я разработчик в команде в Starbucks. Мы поддерживаем партнеров (сотрудников) магазина с помощью мобильных приложений и микросервисов. Мы не являемся командой потребителей/общественности, что означает, что наши приложения/службы предназначены только для внутреннего использования.
Мы реализуем шаблон «frontend for backends». У нас есть команда разработчиков API/платформы, отвечающая за создание микросервисов платформы/ядра. Подумайте о товаре, заказе, StockCount. У нас есть как веб-приложения, так и мобильные приложения, которые используют эти основные сервисы.
Для каждого веб-сайта и мобильного приложения/модуля у нас есть соответствующий NodeJS API, так что само приложение не связано с нашими API-интерфейсами платформы. Мы называем эти API-интерфейсы API/API для API платформы. Наши API-интерфейсы платформы - это Java/Kotlin, использующие Akka, Kafka, Docker и т. Д. И т. Д., А наши API-интерфейсы продуктов - это NodeJS и построены как простые/немые.
Причина этого «среднего слоя» API-интерфейсов продукта заключается в том, что мобильные/веб-приложения имеют определенные API-интерфейсы, которые могут поражать их особые потребности, а команды продуктов могут модифицировать свои API-интерфейсы NodeJS, поскольку они нуждаются в разрезе и кубиках данных и вызывать наши API-интерфейсы платформы. Это позволяет нашим продуктовым группам оптимизировать вызовы между мобильными/веб-серверами и серверами на их NodeJS API.
Mobile (App 1) => API Gateway => NodeJS (App 1) => API Gateway => API платформы 1, API 2, API 3 (поддержка всех приложений).
Когда мы только начали создавать мобильные и SPA-разработки, как мобильные, так и веб-сайты, используемые для прямого общения с нашими API-интерфейсами платформы. Это вызвало у нас некоторое горе, когда мы хотели внести изменения, и мобильные приложения не были разработаны лучше всего, и поэтому были тесно связаны с API.
Наличие уровня NodeJS позволяет их мобильным/веб-приложениям оставаться стабильными, одновременно подталкивая проблему к уровню NodeJS, что, по крайней мере, облегчает внесение изменений, и мы полностью контролируем развертывание.
Скучный ответ, извините :)
EDIT: Что касается трех ваших вопросов, я хотел бы рассмотреть эти антишаблоны и рекомендовал бы против смешения проблем.
API REST не должен быть связан с представлением (html, как вещи отображаются на странице), а скорее с раскрытием данных.
Предоставлено, что высказывание о мнениях похоже на ** дыры, у каждого есть один ... но исходя из моего опыта и лет чтения, я никогда не верну HTML в своих API, вот работа веб/мобильное приложение для отображения (разделение проблем, SRP, сделайте одно хорошо).