Rails(graphqlサーバー) + React(Next.js)での自分の経験からだと
Railsを公開URLで運用する場合
扱っているデータがどこまでプライベートなものなのかによりますが、この場合だとログイン認証をする場合(cookieを使用するとして)、frontendとbackendのドメインによってはなかなかややこしい状況になります。
同じドメインで、サブドメイン違いならそこまでややこしくありませんが、全く別のドメイン同士などではそれなりの設定が必要になります。
ユーザー → ブラウザ → React → Graphqlクライアント → Rails(Graphqlサーバー) → データベース → レスポンス → ブラウザに表示
Railsを公開URLで運用しない場合
- クライアント側からは http://backend... でアクセス出来ない
-
http://frontend... でアクセスできる
- React(Next.js)のapi routesを使って、Next.jsのサーバー側でbackendのgraphqlにローカルサーバー同士としてアクセスしデータを取る
この場合だとログイン認証(cookieの管理)はNext.jsだけで出来るので、一般的な処理でクライアント側からNext.jsのサーバー側(api routes側)にcookieが渡せて、検証確認後にapi routes内でローカルとしてのbackendのgraphqlサーバーに接続して..みたいに出来ます。
が、一方バケツリレーが1つ増えます。
ユーザー → ブラウザ → React(Next.js)fetchなどで → Next.jsサーバー側(api routes)Graphqlクライアント → Rails(Graphqlサーバー) → データベース → レスポンス → Next.jsサーバー側(api routes)からデータをそのまま転送 → ブラウザに表示
クライアントとGraphqlサーバー間にNext.jsサーバー側
が間に挟まるので、ここがデータを双方向に転送しないといけなくなります。
あくまでもReactとRailsでという事なので、そうでない場合は全てをjavascriptでやってしまって、サーバー側とよりシームレスにする方法もあると思います(javascriptのgraphqlサーバーだとか、データ管理はfirebaseでやってしまうとか)。