🐒
Go (gin) の事始め (メモ)
はじめに
初投稿です。何か変なこと書いてたら、ご指摘いただけると幸いです。
概要
最近、Goを初めて触ったので、備忘録として基本的なことを記録(Goというよりginの基本的なこと)。
Goの理解は死ぬほど浅いが、フレームワーク (gin) も使った。
プロジェクト作成
任意のディレクトリで実行。
$ go mod init プロジェクト名
「go.mod」ファイルが作成される。
gin導入
同ディレクトリ (ルートディレクトリ) で実行
$ go get -u github.com/gin-gonic/gin
gin導入完了。
main.goでサーバーを建てる
- ルートディレクトリに、「main.go」ファイルを作成
- とりあえず、以下のようにしてサーバーを建てる。
main.go
//パッケージ名
package main
//必要なものをインポート
import (
"github.com/gin-gonic/gin"
)
//main関数はサーバ起動時 (「go run main.go」した時) に自動で最初に実行
func main() {
router := gin.Default()
router.Run("localhost:8000")
}
-
gin.Default()
で、Engineというインスタンスを生成 (router変数に格納)し、*gin.Engineを返す。 -
router.Run("localhost:ポート番号")
で、ポート番号指定。
HTTPメソッド
gin.Engine
を使うと、gin.Engine.GET
(POST, PUT, DELETE)のようなメソッドを使用可能。
故に、以下のようなことが可能。
main.go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/api", func(ctx *gin.Context) {
ctx.JSON(200, gin.H{"message": "Hello"})
})
router.Run("localhost:8000")
}
go run main.go
を実行し、localhost:8000/api
にアクセスすると、{"messagge":"Hello"}
とブラウザに表示される。
gin.H
はmap[string]interface{}
と同義。
{key(string): value(string)}
なものを返す。
gin.Context
gin.Context
は、リクエストの (GETされた, PUTした) データやパラメータ、またはエラー情報などいろんなものを含んだもの (自分なりの理解)。
上の例では、引数ctx
がgin.Contextのポインタ型 (*gin.Context
)。
Discussion