はじめに
Go言語のWebフレームワークgin
。
しかし、繰り返しのコードをいちいちめんどくさいことを書きたくないと思います。
ドキュメントは英語、日本語、韓国語、中国語(簡体字)、ベトナム語があります。(2017/08現在)
日本語ドキュメント
インストール方法
go get github.com/dcu/gin-scaffold
プロジェクト生成
gin-scaffold init hoge
各操作をするときはプロジェクト内で行うのでフォルダ内に入っておきましょう。
cd hoge
DBの用意(MongoDB)
インストール
Qiitaの記事のこちらがいいのでそこを参考に。(Mac)
起動
sudo mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb.log
一旦起動
hogeプロジェクトなので起動ファイルもhoge.go
になってます。
go run hoge.go
http://localhost:4000
にアクセスすれば見られます。
func getPort() string {
port := os.Getenv("PORT")
if port == "" {
port = "4000" // ここを変更
}
return port
}
表示
Nothing to see here.が見えたら成功。
スキャフォルディング
足場が作れます。(プロジェクトの中(今回はhoge
フォルダ)で行うこと)
gin-scaffold scaffold モデル名 フィールド名:型名
例
gin-scaffold scaffold User name:int
User
のU
は大文字ですが、小文字でもいいようになってます。
各アクセス
[GIN-debug] POST /users --> hoge/controllers.(*UsersController).(hoge/controllers.createUser)-fm (3 handlers)
[GIN-debug] GET /users --> hoge/controllers.(*UsersController).(hoge/controllers.listUsers)-fm (3 handlers)
[GIN-debug] GET /users/:user_id --> hoge/controllers.(*UsersController).(hoge/controllers.getUser)-fm (3 handlers)
[GIN-debug] PUT /users/:user_id --> hoge/controllers.(*UsersController).(hoge/controllers.updateUser)-fm (3 handlers)
[GIN-debug] DELETE /users/:user_id --> hoge/controllers.(*UsersController).(hoge/controllers.deleteUser)-fm (3 handlers)
[GIN-debug] GET / --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :4000
とログが出るので直ぐにわかると思いますが、
なんどもscafoldのコマンドをするとうまく起動できず以下のエラーが出ると思います。
controllers/router.go:11: no new variables on left side of :=
controllers/router.go
のSetupメソッドに同じコードが存在するときなので削除します。
// Setup sets up all controllers.
func Setup(router *gin.Engine) {
users := UsersController{Router: router}
users.Setup()
users := UsersController{Router: router} # ここ消す
users.Setup() # ここ消す
}
// vi:syntax=go
GET(User一覧の取得)
http://localhost:4000/users
へアクセスする。
POST
テンプレートがないのでcurl
コマンドで行うのがいいです。
curl -w '\n' 'http://localhost:4000/users' --data 'name=1234' -XPOST
DELETE
curl -XDELETE 'http://localhost:4000/users/59b53b3ea75b064cedce7773'
idを指定します。ここでは、59b53b3ea75b064cedce7773
がid。
PUT
curl -XPUT 'http://localhost:4000/users/59b53b35a75b064cedce7772' -d 'name=天才'
これで指定。
×これはダメ。JSONも対応したいかな。
curl -XPUT 'http://localhost:4000/users/59b53b35a75b064cedce7772' -d '{
"name" : "trying out Elasticsearch"
}'
更新したいもののidを指定。
※PUTはPOSTと違い、リソース名を指定して作成または更新をかけるメソッドです。
id:1のUser取得
http://localhost:4000/users/1
へアクセスする。
その他各操作
モデル
gin-scaffold model モデル名 フィールド名:フィールドの型
コントローラ生成
gin-scaffold controller コントローラ名
注意点
まだintとstring以外で生成すると怪しい。
私もCollaboratorなので修正する見込み。
対応しました。