今日はGinを使って、簡単なGo APIを動かすところまでやってみたいと思います。初歩ということで、まずはインストールとQuick Startを実施します。
- Ginとは
- Ginのインストール
- Ginを動かす
Ginとは
Ginとは、Golangで開発されたWebフレームワークで、パフォーマンスに優れたAPI機能を提供します。(GinのGitHubから引用しています。)
Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.
日本語訳されたドキュメントが以下リンク先に用意されています。非常にありがたいです。。。
https://gin-gonic.com/ja/docs/
Ginのインストール
以下のコマンドでGinの必要なパッケージをインストールします。インストール後、ソースコードにimport "github.com/gin-gonic/gin"
を記述して使えるようになります。
$ go version go version go1.14.3 darwin/amd64 $ go get -u github.com/gin-gonic/gin
Ginを動かす
GinのQuick Startを実施して、httpリクエストを受け付けるとJsonを返すAPIを作成します。
リンク先のソースコードをコピーして、getting_start.goを作成します。
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }
実行すると以下のエラーが発生しました。
$ go run getting_start.go getting_start.go:3:8: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module
ワークディレクトリにmoduleがないというエラーなので、以下のコマンドでモジュールを作成します。
$ go mod init go: creating new go.mod: module gin $ ls getting_start.go go.mod
再度実行します。
$ go run getting_start.go go: finding module for package github.com/gin-gonic/gin go: found github.com/gin-gonic/gin in github.com/gin-gonic/gin v1.6.3 [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080
localhost:8080/pingにhttpリクエストを送信すると、Jsonを返します。
$ curl localhost:8080/ping {"message":"pong"}
getting_start.goの出力結果にレスポンスタイムとステータスが記録されていました。
[GIN] 2020/07/12 - 01:45:41 | 200 | 38.361µs | ::1 | GET "/ping"
以上です。まずは動かしてみたということで、これから色々触ってみたいと思います。
コメント
コメントは停止中です。