/var/log/messages

Nov 4, 2015 - 2 minute read - Comments - Go

Revel 修行

とりあえず、以下なリポジトリを clone してみます。

と、その前に環境確認を。

$ go version
go version go1.5.1 linux/amd64

一応以下が必要なのかどうか。

$ go get github.com/revel/revel # revel framework を取得
$ go get github.com/revel/cmd/revel # revel command を取得

GOPATH 設定しろ、と叱られたので以下に。

$ env|grep GO
GOPATH=/home/rms/.go

これで実行できるのかしらん。や、revel が実行できない。$PATH に $GOPATH/bin 追加らしい。で、実行。そして駄目。

No import path given.

むむ、これって $GOPATH/src 配下に云々、なのか。確認してみるに $GOPATH/src/github.com/revel があったのでそこに clone しました。で、以下で起動。

$ revel run github.com/revel/samples/chat dev

localhost:9000 にてアクセスできること確認してます。

作ってみる?

とりあえず API てきには以下な要件らしいのですが

  • GET /register/:id
  • POST /register
  • DELETE /register/:id

ハナから :id 入ってるのどうなの、って話なのですがスルーします。revel てきには以下な記述になったりするのかな。

GET /api/v1/register/:id     ApiV1Register.Show
POST /api/v1/register        ApiV1Register.Post
DELETE /api/v1/register/:id  ApiV1Register.Delete

とりあえず、エントリポイントだけ作るのであれば以下なカンジになるのかどうか。

// app/controllers/api/v1/Register
package controllers

import (
        "github.com/revel/revel"
        "net/http"
)

type ApiV1Register struct {
        *revel.Controller
}

func (c ApiV1Register) Show(id int) revel.Result {
        r := Response{"Show"}
        return c.RenderJson(r)
}

func (c ApiV1Register) Post(id int) revel.Result {
        r := Response{"Post"}
        return c.RenderJson(r)
}

func (c ApiV1Register) Delete(id int) revel.Result {
        r := Response{"Delete"}
        return c.RenderJson(r)
}

これ作っておいて試験してみる、はアリなのかどうか。

作ってみる

まず以下。

$ revel new github.com/yamanetoshi/close2someone

なんか出来てる。

$ ls ~/.go/src/github.com
agtorre  revel  robfig  yamanetoshi

ということは実行できるのか。

$ revel run github.com/yamanetoshi/close2someone

It works! 出てるの確認。中身確認してみるに

$ ls -al
app
conf
.gitignore
messages
public
README.md
tests

というカンジ。その後、色々盛り込んで json なレスポンスが戻ってくること確認できてます。とりあえず、DB 抜きなプロトタイプができたということで続きは別途。

もしかすると

これを Heroku に deploy して云々、まではやるかも、やらないかも。