goaでgo-bindataを利用してバイナリ化した静的ファイルを表示させる

やりたかったこと

タイトルママ。

goaでは静的ファイルをサーブするためにFilesというDSLが用意されているが、これを利用しても、自動的にgoaアプリケーションのバイナリに静的ファイルがビルドされるわけではないので、サーバープロセスにとしてバイナリを起動してもファイルへのアクセスは404となってしまう。これを解決したかった。

成果

リポジトリ名:goabinsample

やったこと

ゴール:今回は、ひとまずSwaggerUIのファイルへのアクセスをさせるようにしてみます。

  1. 通常通り、設計ファイルを作成する。
  2. goagen bootstrap -d goabinsample/design
  3. 別途swaggeruiを取得し、適当なディレクトリに配置(サンプルでは、/swaggeruiディレクトリに配置)
  4. この時点で、swaggerのファイルへのパスに対してDSLを通してさえいれば、go run による確認は可能
  5. 参照させたい静的ファイルをgo-bindataで.goファイルに変換
  6. 5で作成したファイルを利用してファイルハンドリングを行うファイルハンドラを返却する関数を作成(サンプルではこのファイル
  7. goagenから自動生成されたcontroller.goを参考に適当なファイル(今回は自動生成されたmain/swagger.goに追記した)に、Controllerをマウントする関数を作成する。(参考:このファイルのfunc MountSwaggerControllerのみ追記した)
  8. 自動生成された状態では、mainはapp/controller.goに生成されたapp.MountSwaggerControllerをコールするので、それを7で作成したMountSwaggerControllerを呼ぶように 修正する。
  9. 一通りの作業を終えていれば、これでもうgo-bindataのデータを表示しているはずである
以上!!!!!
キレイにやろうとすると、色々手間も掛かりそうなので、一旦ここまで!!!!

このブログの人気の投稿

2016年にgoを使ったのでまとめ

採用とは何か

エンジニアの妻になってしまった我が妻には感謝している