GinでREST APIを作ってみよう
まずは、新しくディレクトリを作って、その中で作業します。
[tanaka:~] $ mkdir gin_rest_api && cd gin_rest_api
作業ディレクトリに入ったら、go.modファイルを作成します。コマンドの形式は以下の通りです。
$ go mod init 任意のプロジェクト名
今回は、「gin_rest_api」というプロジェクト名にするので以下のコマンドを実行します。
[tanaka:~/gin_rest_api] $ go mod init gin_rest_api
上記を実行したらgo.modファイルが作成されているはずです。
[tanaka:~/gin_rest_api] $ ls
go.mod
そしたら次は、ginのパッケージをインストールします。
[tanaka:~/gin_rest_api] $ go get -u github.com/gin-gonic/gin
すると今度はgo.sumというファイルがディレクトリ内に作成されます。
[tanaka:~/gin_rest_api] $ ls
go.mod go.sum
ここまで完了したら、main.goというファイルを作成します。
[tanaka:~/gin_rest_api] $ touch main.go
main.goに以下のコードを貼り付けます。
/helloというURLにGETでリクエストをすると、”hello, world!”という文字列をレスポンスとして返す処理です。
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "hello, world!",
})
})
r.Run()
}
ものすごくシンプルですが、一応これでREST APIは作成できました。
curlコマンドでAPIを叩いてみる
まず、APIを叩く前にGinのサーバーを立ち上げます。
[tanaka:~/gin_rest_api] $ go run main.go
[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] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
上記のように表示されればGinのサーバーが立ち上がり、8080ポートにリクエストを送ってAPIが叩けます。
もう一つ別でターミナルの画面を立ち上げ、curlコマンドを実行してみます。
[tanaka:~/gin_rest_api] $ curl localhost:8080/hello
{"message":"hello, world!"}
このようにJSONが返ってくれば処理は成功です。