Skip to Content

Go echo WEBサーバのチュートリアルを試す

概要

echoの公式チュートリアルのGetting Startedと、Responseを試す

結論

net/http 単体でHTML扱うより分かり易かった

目的

APIを使った検証してみたいことがあり、手始めにまずは触ってみる

環境

対象 バージョン
golang go version go1.12.5 linux/amd64
Ubuntu VERSION=“18.04.2 LTS (Bionic Beaver)”
shell fish, version 3.0.2

Get Started

echoインストール

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

WEBサーバ作成

チュートリアルのポート番号だけ変更した以外はそのまま

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(":8080"))
}
実行結果

コンソール画面

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

WEBブラウザでアクセス

curl でアクセス

> curl localhost:8080
Hello, World!

Response

HTMLのレスポンスとステータスコードを返す

echo.Context

先程のコードをベースに echo.Context を使用してみる
.RealIP 接続元のIPアドレスを取得できる
htmlのタグと共に試してみた

package main

import (
	"fmt"
	"net/http"

	"github.com/labstack/echo"
)

func htmlHandler(c echo.Context) error {
	return c.HTML(http.StatusOK, fmt.Sprintf("<h3>あなたのIPアドレスは %s</h3>", c.RealIP()))
}

func main() {
	e := echo.New()
	e.GET("/", htmlHandler)
	e.Logger.Fatal(e.Start(":8080"))
}
実行結果

WEBブラウザでアクセス
localhostでアクセスすると面白くない結果になった

IPアドレス指定で改めてアクセス
正しく自端末のIPアドレスを返してくれた

まとめ

簡単にできたけど実戦で使うにはどうしたらよいかわからない
WEB周りは不慣れなのでGoを通して少しずつ勉強していく
後、echoの公式サイトのフォントが見易い
英語は同じフォント使ってみたい

参考

https://hawksnowlog.blogspot.com/2019/04/tutorial-golang-echo.html https://echo.labstack.com/guide https://echo.labstack.com/guide/response#send-html-reference-to-templates