Как верно рендерить шаблоны сайта при использовании REST API?

Прошу помощи у участников сообщества.

Планирую разработать информационый сайта. В основном текстовая информация, картинки. Редакционные материалы + User generated content. Плюс со временем сайт будет «обвешан» различными сервисами — в основном каталоги, справочники, форум и т.п.

Какой-либо готовый движок не рассматриваю, хотя немалый опыт работы со многими продуктами — от WP до Битрикса.
Изначально планировал писать всё на базе mv-framework, так как последние проекты реализовывал именно на нём. Однако это были корпоративные сайта, а тут все же речь идёт о сервисе, который потенциально будет достаточно посещаемым. Плюс ко всему уже сейчас ясно, что будет мобильное приложение.

Перечитав множество статей о том как надо и как не надо более менее сложилась в голове следующая картинка:

Лучше всего сразу написать API по принципу REST на каком-нибудь PHP фреймворке. Скорее всего Slim или Silex. Это для того, чтобы потом проще писалось то же мобильное приложение, да и из-за USG многие функции будет перекликаться с админкой. API хочу положить куда-нибудь на поддомен, например api.domain.ru и туда направлять все запросы от бэкэнда и фронтэнда. И тут возникают вопросы:

1) Как правильнее реализовать авторизацию, чтобы API принимала запросы только от сайта и приложения.
2) Как правильнее по модели REST API передавать файлы? Например, загрузка картинок в галерею из админки.
3) Как вернее рендерить шаблон сайта? Вываливать JSON и обрабатывать handlebarsjs каким-нибудь не очень хороший вариант с точки зрения SEO (проект-то контентный). Или рендерить шаблон на сервере целиком? Тогда как его отдавать в рамках концепции REST API правильно? Или рендерить часть на сервере (то, что критично для SEO), а подгружать данные уже AJAXом по API и разбирать JSON на стороне бразуера, меняя DOM страницы где надо? Опять же хотелось бы тот же все построение страницы (рендеринг) сделать прогрессивным. Или при server side подходе получается только мнимо это сделать средствами CSS?

И прошу ещё помочь мне до конца уложить в голове общий принцип взаимодействия backend/frontend с данными. Пишем на фреймворке отдельный роутинг реализующий REST и всю логику. И отдельный роутинг, который при открытии с API общается?

Например есть у нас /register/ с формой регистрации пользователя. Мы отправляем данные POST /user на api.domain.ru. Получаем ответ в JSON и как-то выводим это в браузер, проводя рендер либо на сервере, либо на клиенте? Или схема работает иначе?

Заранее признателен за развернутый ответ и уделённое время.
  • Вопрос задан
  • 850 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы