Web開発ログ | エンジニアに役立つ情報 | 開発の中での気づきを発信

高卒Devlog

Golangフレームワーク【Echo】を使ってみた

thumbnail

こんにちは! RYOTAです!

当記事をご覧くださりありがとうございます!

Go言語のフレームワーク【Echo】に触れてみたので使い方や設定方法をまとめていこうと思います!

Goのフレームワーク【Echo】とは

EchoとはGo言語の数あるフレームワークの中でも軽量なフレームワークになります。
高機能かつ拡張性も高くとても人気の高いフレームワークとなります。
GitHub - labstack/echo: High performance, minimalist Go web framework High performance, minimalist Go web framework. Contribute to labstack/echo development by creating an account on GitHub. GitHub

その他のGoフレームワーク

  • Gin

GitHub - gin-gonic/gin: Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. - ... GitHub

  • Revel

GitHub - revel/revel: A high productivity, full-stack web framework for the Go language. A high productivity, full-stack web framework for the Go language. - GitHub - revel/revel: A high productivity, full-stack web framework for the Go language. GitHub

  • iris

GitHub - kataras/iris: The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio :rocket: The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio :rocket: - GitHub - kataras/iris: The fastest HTTP/2 Go... GitHub

実際にサーバーを構築

今回はサクっとお試しするためにDocker環境を構築してその上でEchoを動かしてみます。
下記が目標の構成です。

┣─ back
┃  └─ server.go
┣─ Dockerfile
┣─ go.mod
┣─ go.sum
└─ docker-compose.yml

Dockerの設定

まずはdocker-compose.ymlとDockerfileを用意しGoが動かせる環境を作ります。

version: '3'
services:
  server:
    build: ./back
    tty: true
    volumes:
      - ./back:/go/src/work


FROM golang

RUN mkdir /go/src/work

WORKDIR /go/src/work

ADD . /go/src/work

Dockerfileが用意できたらDockerを起動します。

$ docker-compose build


$ docker-compose up -d

Dockerの起動が確認できたらGoが動くか確認します。
テスト用のファイルを作成します。(後で削除します。)

package main

import "fmt"

func main() {
	fmt.Printf("テスト実行\n")
}

コンテナにアクセス

$ docker-compose exec server bash

作成したtest.goを実行し、結果が返って来ればOK!

$ go run test.go
# -> テスト実行

Echoをインストール

下記のコマンドを実行しgo.modを作成します。

$ go mod init echo-test

goの初期化が完了したらいよいよEchoをインストールしてみます。

$ go get github.com/labstack/echo/v4

上記コマンドで正常にインストールが完了するとgo.sumが作成され必要なパッケージが入ってることが確認できます。

EchoでHTTPサーバーを作成

簡単なレスポンスを返すメインファイルを作成します。

package main

import (
	"net/http"

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

func main() {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello World!")
	})
	e.Logger.Fatal(e.Start(":3000"))
}

最後にdocker側のポートを割り当てて、起動時にサーバーも起動するように変更します。

version: '3'
services:
  server:
    build: ./back
    tty: true
    volumes:
      - ./back:/go/src/work 
    ports:                      # 追加
      - 3000:3000               # 追加
    command: go run server.go   # 追加

一度コンテナから抜けて、Dockerを再起動

$ exit
$ docker-compose up

localhost:3000でアクセスしてレスポンスが返って来れば成功!

最後に

今回はGo言語のフレームワークEchoをインストールし、簡単なHTTPサーバーを作成しました。
超最小限の動作チェックになるので、次回はDBにアクセスしながらCLUDが行える状態を目指そうと思います!
最後までご覧いただきありがとうございます!