[Golang] Ginを始める

2022-04-11 hit count image

Golangのウェブフレームワークでもっとも有名なGinウェブフレームワークを使ってGolangでウェブサーバーを開発する方法について説明します。

概要

今回のブログポストではGolangを使ってウェブサーバーを開発する方法について説明します。Golangではたくさんのウェブフレームワークがありますが、その中で最も有名なウェブフレームワークであるGinウェブフレームワークを使う方法について説明します。

このブログポストで紹介するソースコードは下記のリンクで確認できます。

ブログシリーズ

このブログポストはGolangでGinウェブフレームワークを使う方法についてシリーズで作成されております。Ginウェブフレームワークの他の使い方について知りたい方は、下記のリンクを参考してください。

  • [Golang] Ginを始める

Goプロジェクト生成

Ginウェブフレームワークの使い方を確認するため、次のコマンドを実行してGoモジュールを使ってプロジェクトを用意します。

mkdir start
cd start
go mod init github.com/dev-yakuza/study-golang/gin/start

コマンドの実行が終わったら、次のように./go.modファイルが生成されることが確認できます。

module github.com/dev-yakuza/study-golang/gin/start

go 1.17

Ginウェブフレームワークのインストール

Ginウェブフレームワークを使うためには、次のコマンドを使ってGinウェブフレームワークをインストールします。

go get -u github.com/gin-gonic/gin

そしたら、次のように./go.modファイルにGinウェブフレームワークに関する内容が追加されたことが確認できます。

module github.com/dev-yakuza/study-golang/gin/start

go 1.17

require (
  github.com/gin-contrib/sse v0.1.0 // indirect
  github.com/gin-gonic/gin v1.7.7 // indirect
  github.com/go-playground/locales v0.14.0 // indirect
  github.com/go-playground/universal-translator v0.18.0 // indirect
  github.com/go-playground/validator/v10 v10.10.1 // indirect
  github.com/golang/protobuf v1.5.2 // indirect
  github.com/json-iterator/go v1.1.12 // indirect
  github.com/leodido/go-urn v1.2.1 // indirect
  github.com/mattn/go-isatty v0.0.14 // indirect
  github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
  github.com/modern-go/reflect2 v1.0.2 // indirect
  github.com/ugorji/go/codec v1.2.7 // indirect
  golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
  golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12 // indirect
  golang.org/x/text v0.3.7 // indirect
  google.golang.org/protobuf v1.28.0 // indirect
  gopkg.in/yaml.v2 v2.4.0 // indirect
)

また、./go.sumファイルが生成されたことも確認できます。

Ginウェブフレームワークの使い方

そしたら、Ginウェブフレームワークを使ってウェブサーガーを起動してみます。./main.goファイルを生成して次のように修正します。

package main

import "github.com/gin-gonic/gin"

func setupRouter() *gin.Engine {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.String(200, "pong")
  })
  return r
}

func main() {
  r := setupRouter()
  r.Run(":8080")
}

コードを詳しく見えみましょう。

func setupRouter() *gin.Engine {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.String(http.StatusOK, "pong")
  })
  return r
}

Ginウェブフレームワークが提供するgin.Default()を使ってウェブサーバーを生成して特定URL(/ping)に関して動作する関数を定義します。この例題では簡単にpongと言う文字をStatusOK(200)状態と一緒に返すようにしました。

func main() {
  r := setupRouter()
  r.Run(":8080")
}

このように特定URLとそれに必要な動作を定義した後、生成されたウェブサーバをrun関数を使って8080ポートで実行されるようにしました。

次に、下記のコマンドを使ってウェブサーバーを起動します。

go run ./main.go

そしてウェブブラウザを開いてhttp://localhost:8080/pingのURLを入力すると次のような結果が確認できます。

pong

完了

これでGolangで最も使ってあるGinウェブフレームワークを使ってウェブサーバーを起動する方法についてみてみました。今度はこのGinウェブフレームワークを使う方法についてポスティングする予定です。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts