【GO】ginを使ったWEBサービスの構成


golangパッケージ、ginを使ったWEBサービスのテストができたので実際にどう構築するか考えてみました。

思いついたときにサービス追加しやすいことを前提に構成する。

基本構想

HTML表示をどこでやるか考える。

ginではAPIを書いてjavascriptで管理する方がサーバ負荷が小さく既存知識を生かせるように思うが、全体のコード量は増えそう。

HTMLテンプレート

html/template機能を使って表示までginで管理する。

主に使うのはgin.Context.HTML()

Javascript + GO WEB API

ginでは静的ファイルの提供とAPI動作のみを書く。

表示側はjavascriptのフレームワークで管理する。

MVCフレームワークでgin APIを呼び出して仮想DOMで表示させるような運用。

主に使うのはgin.Context.JSON()

ファイル構成

ginソース内はサービス単位で分けるかMVCで分けると楽になると思う。

最終的に実行ファイル1つにしたいので(シングルバイナリ化)、テンプレートを含めた静的ファイル群は1つのフォルダにまとめておきたい。

サービスごとに分ける

機能の管理がしやすくてサービス追加が楽。

mainパッケージのハンドラ内でimportがどんどん増えて混乱するかもしれない。

またjavascriptフレームワークメインで表示を行うのであればasset内はフレームワークの標準的なフォルダ構成になる。

MVCで分ける

モデルとコントローラーで分けるとサブパッケージは2つですむが、同名の構造体が使えなくなるので命名に気を付けないといけない。

ハンドラ関数の扱い

main.goはginエンジンの設定だけ書くようにしたい。

ハンドラ関数は大体小さい処理になるのでサービスが少ないうちはメインパッケージの別ファイルに書いて問題ないと思うが、数が増えた時を考えるとコントローラパッケージに入れてもいいかもしれない。

あるいはルーティングパッケージでも作ってそこにまとめる方法もある。


コメントを残す

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