🐒
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