1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

goa v3のインストールからとりあえず実行出来るかの確認まで

Last updated at Posted at 2019-06-08

goa v3のインストールからとりあえず実行出来るかの確認まで

v3のインストール兼実行方法が載ってない気がしたので。
あくまでインストールと、公式のGetting Startedを実行してみる手順を纏めた物、後自分がハマった所。

必要なの

  • go 1.11以降(モジュールを使用する為)

    また、httpだけでなく、gRPCを使用する場合は下記も必要になる。
    今回は無しでいきます。

  • protocバイナリ

    • protoc-gen-go

      go get -u github.com/golang/protobuf/protoc-gen-go
      

インストール

GO111MODULE=onはこの後も必要なのでbashrcにでも。

$ export GO111MODULE=on
$ go get -u goa.design/goa/v3
$ go get -u goa.design/goa/v3/...

チュートリアル

公式のGetting Startedより。
今回はcalcというのを作ります。
go mod initを忘れずに。

$ mkdir -p calc/design
$ cd calc
$ go mod init calc
$ go get -u goa.design/goa/v3
$ go get -u goa.design/goa/v3/...
$ vim design/design.go
design.goにこのコードを書く
package design

import (
	. "goa.design/goa/v3/dsl"
)

var _ = API("calc", func() {
	Title("Calculator Service")
	Description("Service for adding numbers, a Goa teaser")
    Server("calc", func() {
        Host("localhost", func() {
            URI("http://localhost:8000")
        })
    })
})

var _ = Service("calc", func() {
	Description("The calc service performs operations on numbers.")

	Method("add", func() {
		Payload(func() {
			Field(1, "a", Int, "Left operand")
			Field(2, "b", Int, "Right operand")
			Required("a", "b")
		})

		Result(Int)

		HTTP(func() {
			GET("/add/{a}/{b}")
		})

	})

	Files("/openapi.json", "../../gen/http/openapi.json")
})

上記コードをdesign.goに書いた後に、calcディレクトリにて下記コマンド2つを実行する。

$ goa gen calc/design
$ goa example calc/design

色々生成された後に、一度下記のようにcalc.goの内容を書き変える。

func (s *calcsrvc) Add(ctx context.Context, p *calc.AddPayload) (res int, err error) {
  return p.A + p.B, nil
}

その後ビルドする。calc.goの内容を書き変えるのを忘れずに。

$ go build ./cmd/calc && go build ./cmd/calc-cli

無事ビルドが終わったら実行。

$ ./calc

同時にサーバー側だけでなくクライアント側(clc-cli)も作成してくれている。
勿論curl等でもいいが、下記でサーバーへのリクエストが出せる。

$ ./calc-cli --url="http://localhost:8000" calc add --a 1 --b 2
3

注意点

自分が詰まった所とかとか。

  • モジュールを使用しているので、必ずgoのバージョンが1.1以上である事。
    • Ubuntuのaptだと1.0か何かでダメだったのでsnapにした。
    • GO111MODULE=onを環境変数に入れるのを忘れない事。
  • go mod initを必ずしている事
    • これ忘れてgo get ~してもずっとエラーでインストール出来なかった。
  • goa genコマンド等を実行しているディレクトリが間違えていないか。
  • calc.goを書き変えるのを忘れないようにねー。
    • 確か足した結果はそのままだと返ってこない筈。
  • このサンプルでは、公式のコードを削ってhttpのみにしているが、gRPCが入っている場合は必要なのにあるgRPCに必要な物を入れる事。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?