5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Echoで簡単なwebサーバーを実装してみる

Posted at

VOYAGE GROUPのサマーインターン「Treasure」のアドベントカレンダー17日目の記事.
遅れてごめんなさい.

目的

Goのwebフレームワークの一つであるEchoを使って簡単なwebサーバーをさくっと生やす

なんでEcho?

Goのwebフレームワークはたくさんある. ginとかbeegoとか...
そんな中Echoを選んだ理由は

  1. 公式のドキュメントがすごい丁寧でわかりやすかった
  2. 軽量で処理が高速 (らしい)
  3. 書き方がわかりやすかった

という感じ. 他のフレームワークにももちろん良いところはあるのだろうが, とっつきやすさを感じたのでEchoを使うことにした.

echo公式ドキュメント

実践

サーバーの起動

Echoでwebサーバーを起動させるのは超簡単

main.go
package main

import "github.com/labstack/echo/v4"

func main() {
	e := echo.New()
	e.Start(":1991")
}

これでmain.goを実行すると以下のようにwebサーバーが立ち上がる.
スクリーンショット 2019-12-21 16.24.17.png

APIの実装

それではAPIを作っていく. 今回は/helloGETリクエストを送ったらHello Worldという文字列がレスポンスとして返ってくるような簡単なAPIを作る.
main.goに数行追加する.

main.go
package main

import (
	"net/http"

	"github.com/labstack/echo/v4"
)

func main() {
	e := echo.New()
    // 追加部分
	e.GET("/hello", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello World")
	})

	e.Start(":1991")
}

今回はリクエストに対してDBの操作などをしないので, ルーティングの部分でレスポンスを返しているが, もちろん関数に切り出せる.
それではリクエストを実際に飛ばしてレスポンスが返ってくるか確認しよう. まずはmain.goを実行し, 別のターミナル上で以下のコマンド叩く.

curl http//localhost:1991/hello

Hello Worldが返ってきた.
スクリーンショット 2019-12-21 16.48.45.png

まとめ

書いてから気づいたがechoの公式ドキュメントのQuick Startとやってることが99%一緒だった. 今回は簡単な事しかやらなかったがEchoは色々とカスタマイズができる. ログの表示の仕方とかも自分でいじれたりルーティングのグループ化ができたり... 時間ができたらそういったこともアウトプットしていきたい.

5
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?