EchoでWebサーバを立てる
Echoとは
echo.labstack.com
EchoはGolangの軽量Webフレームワークです。
REST API向けに最適化されたフレームワークであり、拡張性が高く、カスタマイズが容易という特徴があります。
今回、EchoでWebサーバをEchoを立てていきます。
事前準備
Golangの環境設定は省略
$ cd $GOPATH/src $ mkdir hello $ cd hello $ touch hello.go
echoパッケージをインストール
$ go get -u github.com/labstack/echo/…
実装
hello.goを何かしらのエディタで開き、以下のように記述
package main import ( "net/http" "github.com/labstack/echo" ) func main() { // ルーティングのためのインスタンスを生成 e := echo.New() // ルーティング e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello World") }) // ポート番号を指定して、サーバ起動 e.Logger.Fatal(e.Start(":1323")) }
サーバを起動
$ go run hello.go 別タブのターミナル上でリクエストを投げる $ curl -s -X GET \ --url 'localhost:1323' Hello World
これでHello Worldという文字列が返ってきました。
次にJSON形式のものを返すようにします。
先程のmainの上に構造体のコードを記述。
// Userの構造体 type User struct { UserID uint `json:"user_id"` FirstName string `json:"first_name"` LastName string `json:"last_name"` }
そしてmain関数の中に以下を記述
// JSON形式でUser情報を返す e.GET("/json", func(c echo.Context) error { jsonUser := User{ UserID: 1, FirstName: "hoge", LastName: "fuga", } return c.JSON(http.StatusOK, jsonUser) })
最終的にhello.go全体の内容は以下のようになります。
package main import ( "net/http" "github.com/labstack/echo" ) // Userの構造体 type User struct { UserID uint `json:"user_id"` FirstName string `json:"first_name"` LastName string `json:"last_name"` } func main() { // ルーティングのためのインスタンスを生成 e := echo.New() // ルーティング e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello World") }) // JSON形式でUser情報を返す e.GET("/json", func(c echo.Context) error { jsonUser := User{ UserID: 1, FirstName: "hoge", LastName: "fuga", } return c.JSON(http.StatusOK, jsonUser) }) // ポート番号を指定して、サーバ起動 e.Logger.Fatal(e.Start(":1323")) }
そして起動
$ go run hello.go 別タブのターミナル上でリクエストを投げる $ curl -s -X GET \ --url 'localhost:1323/json' {"user_id":1,"first_name":"hoge","last_name":"fuga"}
これでUser情報がJSON形式で返ってきました。
ただ、これだと1行でズラーっと表示されるので、より見栄えの良い表示をしてくれるjq
コマンドというものを使ってJSON形式のものを整形して表示します。
stedolan.github.io
$ curl -s -X GET \ --url 'localhost:1323/json' | jq { "user_id": 1, "first_name": "hoge", "last_name": "fuga" }
これで見栄えの良いJSONが返ってきました。
最後に
Echoで簡単にWebサーバを立てることが出来ました。
Echo以外にもGinやirisといった軽量Webフレームワーク、RevelやBeegoといったフルスタックWebフレームワークなどがあるので、そっちもやっていきたい。