【GO】gin+Reactのルーティング


Golang製Web Framework「gin」とjavascriptライブラリ「React」を合わせてウェブサービスを作ることを考えます。

ルーティング部分でちょっと詰まったので覚書き。

ファイルサーバーとしてginを動かす

まずginでファイルを返すにはStaticを使う。

Reactのルーティングを使わない場合にはこれで問題ない。

ついでにReactから呼び出すAPI部分はわかりやすいようにグループ化しておく。

 

Staticはそのままだとルートアクセスに設定できないが”github.com/gin-gonic/contrib/static”を使って簡単に設定できる。

これでルートへのアクセスでReactページを返せます。

Reactルーティング

Reactで<Router>を使っている場合、ルートページから遷移する場合には動作するが、URL直打ちのように直接アクセスすると404が返ってくる。

これはginのルーティングでアクセスエラーになっているせいです。

そこでルーティングが設定されてない場合の動作をNoRouteで書きます。

ファイルがある場合にはそれを返してファイルがない時はindex.htmlを返す。

これで直接アクセス時もReactルーティングに沿った動きになります。

 

ifture側の404動作はReact側でする必要があるのは注意。

このままだとリンクミスや誤アクセスなどのアクセス全てにindex.htmlを返してしまうので、Reactのルーティングに合わせて条件分岐を入れてもいい。

 

シングルバイナリ化する場合は少し力技ですがこう書けます。

色々なパターンを考えていくとこの辺の処理は結構膨らみそう。

図にすると大体こんな感じの流れだと思います。


コメントを残す

メールアドレスが公開されることはありません。