ぺい

大阪の専門学生の落書き。主にエンジニア寄りの話。

GolangのgoaでAPIをデザインしよう(ハマりポイント編)

goaはいいぞ!

f:id:tikasan0804:20170505212036p:plain

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