とりあえず、以下なリポジトリを 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 して云々、まではやるかも、やらないかも。