GolangのgoaでAPIをデザインしよう(ハマりポイント編)
goaはいいぞ!
Golangのgoaの勉強に役立つ情報まとめ - ぺい
goaの情報をもっと見たい方は、上のリンクから確認してください
designが読み込めない
症状
goagenでコード生成出来ない。
goagen bootstrap -d ./design main.go:15:2: local import "./design" in non-local package
対策
$GOPATHからの相対で指定する必要があります。
goagen bootstrap -d github.com/tikasan/goa-stater/design
デザインを書き直したけど、動きが変わらない
症状
- デザイン書き直したんだけど、どうもエンドポイントの動きが変わっていない気がする。
- goagen流したのだけど、動き変わらない。
対策
デザインはあくまでデザインなので、goagenでコードを再生成する必要があります。また、goagenコマンドを流したとしても既にあるファイルには上書きしない仕様になっています。なので、一度消すかまたはforceオプションで強制上書きが必要です。
私は以下のようなMakefileでコード生成のし直しをしています。これで間違いなく生成のし直しが行われます。
REPO:=github.com/tikasan/goa-simple-sample <--- ここを自分の環境に合わせる gen: clean generate clean: @rm -rf app @rm -rf client @rm -rf tool @rm -rf swagger @rm -rf schema @rm -rf js @rm -f build generate: @goagen app -d $(REPO)/design @goagen swagger -d $(REPO)/design @goagen client -d $(REPO)/design @goagen js -d $(REPO)/design @goagen schema -d $(REPO)/design @go build -o build
$ make gen
GAE/Goで使えないんだけど!!(contextの問題で)
症状
GAE/Go環境下で実行するとcontextパッケージが使えません!的なエラーが出る。
$ goapp serve ./server 2017/05/07 22:59:44 Can't find package "context" in $GOPATH: cannot find package "context" in any of: /Users/jumpei/go/src/github.com/tikasan/hoge/vendor/context (vendor tree) /Users/jumpei/go_appengine/goroot/src/context (from $GOROOT) /Users/jumpei/go/src/github.com/tikasan/hoge/src/context (from $GOPATH) /Users/jumpei/go/src/context
対策
一部のソース書き換えを行います。
examples/appengine at master · goadesign/examples · GitHub