alexfedoseev
@alexfedoseev
React & Rails Dev

Как организовать поток запросов к JSON API через Node.js + Express + React приложение?

Есть изоморфное React-приложение, которое крутится на Node.js + Express сервере. Данные забираются/отдаются через JSON API на Rails.

Хочу послушать мнения каким образом лучше организовать поток запросов к API.

Вариант #1

5873bce3032b42abbd62b413e5c6045d.png

Первый запрос от клиента уходит на Node.js сервер (1-2), который делает http-запрос с сервера к Rails API (3). Получает от него данные (4). React рендерит html и отправляет его клиенту (5-6). Далее клиент уже делает ajax-запросы напрямую к API (7-8).

В этом варианте API-серверу придется принимать CORS-запросы.

Вариант #2

65e748a51318412b9babac4215787b55.png

К Node.js/Express добавляется прослойка, которая принимает все запросы на локальный адрес /api (3) и проксирует их на API (4). Соответственно все запросы (в том числе и ajax с клиента) принимает Express, который делает серверный запрос к API. Таким образом убиваем CORS, но удлиняем цепочку.

С точки зрения безопасности вариант #2 предпочтительнее. Но как он с других точек зрения по сравнению с вариантом #1?

UPDATE
Вот тут описано как: @medium
Вот тут pet-production по описанной схеме: alexfedoseev.com
  • Вопрос задан
  • 1734 просмотра
Решения вопроса 1
@iShatokhin
JS developer
Третий вариант: фронтендом на сервере ставится nginx, и он проксирует запросы к Node (для рендера) и к Rails (для ajax на "/api"). Таким образом не нужны CORS запросы, для клиента это будет выглядеть как единый сервер.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
roman01la
@roman01la
JavaScript web developer
Я бы посмотрел на это так: Node.js сервер занимается исключительно React приложением, Rails сервер — API. Возложив ответственность за API на Node.js сервер добавляет сложности в архитектуру и большую нагрузку на сервер рендеринга приложения, имхо, конечно.

То есть, первый вариант предпочтительнее. Тем более, когда Rails сервер — единственный источник API, то проще контролировать возможные будущие клиенты (больше приложений скажем).
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 200 000 до 300 000 руб.
YLab Тольятти
от 90 000 до 140 000 руб.
от 200 000 до 300 000 руб.