お疲れ様です。honyanyaです。
けっこう前にGoのWEBアプリケーションフレームワークである「beego」を簡単に触りました。
前触ったのがGoが1.8.x系でしたので、再度新しいバージョンで触ってみましたのでブログに残そうと思います。
今回のバージョン
$ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
な環境に
$ go version go version go1.11.1 linux/amd64
バージョンは1.11.1と新しいバージョンでやってみます。
beego のインストール
beego を使うためにbeegoとCLIツールであるbeeをインストールします。
go get でサクッと入れました。
$ go get -u github.com/astaxie/beego $ go get -u github.com/beego/bee
$ bee version ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.10.0 ├── Beego : 1.10.1 ├── GoVersion : go1.11.1 ├── GOOS : linux ├── GOARCH : amd64 ├── NumCPU : 1 ├── GOPATH : /home/vagrant/go ├── GOROOT : /home/vagrant/.goenv/versions/1.11.1 ├── Compiler : gc └── Date : Wednesday, 31 Oct 2018
プロジェクト作成
bee new [app-name]
でプロジェクトを作成できます。
$ bee new bee-vertification-001 ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.10.0 2018/10/31 22:06:12 WARN ▶ 0001 You current workdir is not inside $GOPATH/src. 2018/10/31 22:06:12 INFO ▶ 0002 Creating application... create /home/vagrant/go/src/bee-vertification-001/ create /home/vagrant/go/src/bee-vertification-001/conf/ create /home/vagrant/go/src/bee-vertification-001/controllers/ create /home/vagrant/go/src/bee-vertification-001/models/ create /home/vagrant/go/src/bee-vertification-001/routers/ create /home/vagrant/go/src/bee-vertification-001/tests/ create /home/vagrant/go/src/bee-vertification-001/static/ create /home/vagrant/go/src/bee-vertification-001/static/js/ create /home/vagrant/go/src/bee-vertification-001/static/css/ create /home/vagrant/go/src/bee-vertification-001/static/img/ create /home/vagrant/go/src/bee-vertification-001/views/ create /home/vagrant/go/src/bee-vertification-001/conf/app.conf create /home/vagrant/go/src/bee-vertification-001/controllers/default.go create /home/vagrant/go/src/bee-vertification-001/views/index.tpl create /home/vagrant/go/src/bee-vertification-001/routers/router.go create /home/vagrant/go/src/bee-vertification-001/tests/default_test.go create /home/vagrant/go/src/bee-vertification-001/main.go 2018/10/31 22:06:12 SUCCESS ▶ 0003 New application successfully created!
beego の構成
$ cd go/src/bee-vertification-001/ $ tree . . ├── conf │ └── app.conf ├── controllers │ └── default.go ├── main.go ├── models ├── routers │ └── router.go ├── static │ ├── css │ ├── img │ └── js │ └── reload.min.js ├── tests │ └── default_test.go └── views └── index.tpl
コントローラーに専用の処理を追加する
./controllers/default.go
type ProductJson struct { ID int `json:"id"` NAME string `json:"name"` } type ProductController struct { beego.Controller } func (c *ProductController) Get() { var productJson = ProductJson{ ID: 1, NAME: "商品HOGE", } c.Data["json"] = &productJson c.ServeJSON() }
ベースはBeegoのドキュメントを参照
https://beego.me/docs/mvc/controller/jsonxml.md
key名にはご注意ください
https://stackoverflow.com/questions/34127023/json-response-in-beego-controller
次にルーティングの設定を行う
./routers/router.go
func init() { beego.Router("/", &controllers.MainController{}) beego.Router("/product", &controllers.ProductController{}) // 追加 }
これで、 /product にアクセスした際に、 ProductController が呼ばれます
実行確認
$ bee run
でWEBアプリケーションを起動します。
$ curl http://localhost:8080/product | jq { "id": 1, "name": "商品HOGE" }
とこんな感じで JSON を返すことが確認できました。
次のアクション
controllerとroutingのみしか触れていません。
なのでモデル部分も触りたいなと思います。
ゆくゆくはDDDみたいな事もしたいなとも考えたりもしてます。