LoginSignup
6
0

More than 5 years have passed since last update.

GAE+GO+Echoでgo1.11対応した

Last updated at Posted at 2019-04-05

GAE+GO+Echoでgo1.11に対応した。

実はほとんど変更する箇所がないけれど最初のサーバー起動のところだけハマったのでメモ的に。
echoのバージョンは v3.3.10 で対応しています。

Echo公式のGAEへの対応方法はApp Engine Standard Go 1.9までのもので特に更新されてないっぽかった。
https://echo.labstack.com/cookbook/google-app-engine

ただ、上記のやり方でも動くしApp Engine APIを使い続ける場合もそのままで良い。

しかし、今回やりたかったのはApp Engine APIからの脱却。
簡単に言うと最後の

appengine.Main()

を外したい。

で、大したことじゃないので結論。
Go1.11からはgo標準のhttp.ListenAndServeで起動できるようになったので、こいつを使うだけで良い。

具体的には公式のコードのappengine.Main() の部分をhttp.ListenAndServe()にするだけ。

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"

    "github.com/labstack/echo"
)

func createMux() *echo.Echo {
    e := echo.New()
    return e
}

func main() {
    //この辺は相変わらず必要
    e := echo.New()
    http.Handle("/", e)

    //ここから追加
    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
        log.Printf("Defaulting to port %s", port)
    }
    log.Printf("Listening on port %s", port)
    //この部分で起動
    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}

仕組みを理解してる人にとっては当然やんって感じかもしれないですね。

余談ですがFirestoreもGAEから使っていたのをFirebaseのものに変更しました。と言っても、FiresotreってGCPからアクセスしてもFirebaseからアクセスしても同じものを使ってるようでFirebaseの画面から連携処理をしたらそのまま同じデータが見れました。コードも少し書き換えるだけでできたので以前書いた記事に加筆するか新しい記事書くかも。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0