メインコンテンツまでスキップ

GoでAPIサーバーを作る上で

GoでAPIサーバーを作るには今まで標準の net/http パッケージを使用してきましたが、外部で公開されているフレームワークなどを利用することもあります
今回はそれらについての説明をしたいと思います

※応用的な話にはなりますが、「ふ〜〜ん」くらいの軽い気持ちで聞いてもらえたらと思います!

フレームワーク

主要なものはこの2つです

Gin

Ginは古くからあって結構人気のフレームワークです
v1.1が2016年にリリースされています

実際に使う際はこんな感じで使えます

package main

import (
"net/http"

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

func main() {
// routerを宣言
r := gin.Default()

// /ping GET をハンドル
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})

r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

net/http パッケージと違ってGETやPOSTごとに作れるメソッドが用意されているので直感的です
ハッカソンとかならこういったフレームワークを使うほうが楽だと思います

echo

echoも古くからありますが、近年注目をあびてきたフレームワークです
v1.1.0が2015年にリリースされていますが、リリースの更新頻度が高く、最近はv4.11.4がリリースされました

実際に使う際はこんな感じで使えます

package main

import (
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"net/http"
)

func main() {
// Echo instance
e := echo.New()

// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())

// Routes
e.GET("/", hello)

// Start server
e.Logger.Fatal(e.Start(":1323"))
}

// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}

選び方

こういったフレームワークを選ぶ際に、どのフレームワークを選べばよいのかというのは難しいです
対応しているGoのバージョン、パフォーマンス、メモリ管理、開発のしやすさ、エコシステムが充実しているか、、、など多くのことを調べてから決めるといいと思います
ただ、ハッカソンや個人開発であれば「触ったことないしとりあえず使ってみよう」といった感じで良いと思います

もちろん最終課題の際に使用していただいても大丈夫です!!
(なんなら使ったほうが楽に終わると思います)