Echoを試してみる

Go 言語のウェブフレームワークのEchoを試す。

echo

Echo をインストール

まずはインストール

go get -u github.com/labstack/echo/...

仮のソースを追加する。ここでは server.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(":8081"))
}

サーバーを起動して http://localhost:8081 で **Hello, World!**が表示されれば OK

go run server.go

Gin でホットリロード

echo にはソースを変更したら自動的にリロードしてくれる機能がないので、ホットリロードできる Gin を入れてみる(Web フレームワークの Gin とは別物)。

インストール

# go get でインストール
# 環境変数PATHにGOPATH以下のbinが設定されている必要がある。
go get github.com/codegangsta/gin

# 動作確認
gin -h

使い方

# アプリケーション側のポートを指定して起動する
#
# ヘルプ抜粋
# --port value, -p value      port for the proxy server (default: 3000)
# --appPort value, -a value   port for the Go web server (default: 3001)
gin -a 8081 run server.go

[gin] Listening on port 3000
[gin] Building...
[gin] Build finished

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.2.1
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:8081

上記実行して http://localhost:3000 にアクセスできれば OK。-p オプションで gin へのアクセスポートは変更可能。

違う環境で Gin が入らない。

上記の方法で Mac 環境では入ったんだが、Linux 環境にインストールしてみたら Gin がインストールできない。一度 Gin のリポジトリを clone してからビルドしてみるとどうも依存関係にあるライブラリが無くなっている可能性がある。Mac は多分過去のパッケージが残っていたのだと思う。

# ginをcloneする
git clone https://github.com/codegangsta/gin

# main.goを編集
cd gin
vim main.go
--- a/main.go
+++ b/main.go
@@ -7,7 +7,7 @@ import (
        "github.com/codegangsta/envy/lib"
        "github.com/codegangsta/gin/lib"
        shellwords "github.com/mattn/go-shellwords"
-       "gopkg.in/urfave/cli.v1"
+       "github.com/urfave/cli"

んで、ビルドして PATH の通っているところに移動

go build main.go
mv main /path/to/gin

ん~こういうの厄介だな。

参考