GO言語とEchoをちょっとかじってみる

Echo
Jae RueによるPixabayからの画像

遅れながらGO言語への興味が湧いたのでちょっとばかし勉強してみようと思う。
また、GO言語単体でも簡単なwebアプリが作れるようだけどなんか物足りない

ということでGO言語のフレームワークであるEchoも一緒に公式から学んでいこうという話です

なんでEchoを選んだのかというと大した理由はありません。
ネットで調べていてよく見かけるフレームワークがEchoだからです

また、今回はGOを既にインストールしていること前提で進めます。

環境

  • OS: Windows10 home 64bit
  • フレームワーク: Echo
  • 言語: Go 1.16
  • エディター: VSCode

扱うファイル

fetch_app/
  └ fetch_app/
      ├ views/
      │    └ views.go
      ├ go.mod
      ├ go.sum
      └ server.go

modファイルの用意

goコマンドを使ってmodファイルを使います。

go mod init fetch_app

そして出来上がったmodファイルが下になります。

module fetch_app

go 1.16

特に解説することが無いので省略

Echoフレームワークを用意する

goコマンドを使ってgithubからEchoフレームワークを用意することができます。

go get github.com/labstack/echo/v4

上記コマンドを実行するとgo.sumというファイルが生成されます。
そしてinitコマンドで作ったmodファイル内にも以下のように追記されます。

module fetch_app

go 1.16

require github.com/labstack/echo/v4 v4.2.2 // indirect

ここまででとりあえず下準備ができました。

いよいよEchoの公式を参考にして簡単なwebアプリを作ってみます。

webアプリの実装

// fetch_app/fetch_app/server.go
package main

import (
    "fetch_app/views"  // ..1
    "github.com/labstack/echo/v4"  // ..2
)

func main() {
    e := echo.New()  // ..3
    e.GET("/", views.Hello)  // ..4
    e.GET("/:name", views.ShowYourName)  // ..5
    e.Logger.Fatal(e.Start(":1323"))  // ..6
}

  • 1: 後に、”Hello World!”を画面に出力する関数とurlに指定した任意の名前を画面に出力する関数を階層下のフォルダに作る予定なのでここでimportします。
  • 2: 最初にgetしたEchoをここでimportします。
  • 3: Echoのインスタンスを作成
  • 4: http://localhost:1323/にアクセスしたときに”Hello World”を出力する関数を呼び出します。
  • 5: http://localhost:1323/Fetchにアクセスしたときに/以降の文字列(Fetch)を取得し、この文字列で文章を動的に作って画面に出力する関数を呼び出します。
  • 6: go run server.goコマンドを実行することでサーバーを立ち上がりhttp://localhost:1323/またはhttp://localhost:1323/Fetchにアクセスすることが可能になります。
// fetch_app/fetch_app/views/views.go
package views

import (
    "net/http"
    "github.com/labstack/echo/v4"
)

func Hello(c echo.Context) error {  // ..1
    return c.String(http.StatusOK, "Hello World!")  // ..2
}

func ShowYourName(c echo.Context) error {
    your_name := c.Param("name")  // ..3
    return c.String(http.StatusOK, "Hi "+your_name+" !")
}

  • 1: server.goのmain関数内で宣言した”/”または”/(文字列)”にアクセスしたときに呼び出される関数をここに作ります。
    注意点としてserver.goviews.goではパッケージが異なっています
    (各ファイルの一番上に宣言しているpackageを参照)
    この場合他のパッケージから関数を呼び出すためには関数名が大文字から始まっていないといけないようです。
  • 2: この関数が呼び出されたときに呼び出し元に”Hello World!“の文字をただ返します。
    HTMLに加工して表示がしたい場合はe.HTML()を使うことで表示することも可能
  • 3: http://localhost:1323/Fetchにアクセスしたときに”/”以降の文字列(Fetch)の文字を取得します。
    Paramの引数にe.GET(“/:name”)nameを指定するとその位置にある文字列を取得することができます。
    ステータスコードも今はStatusOKしか使っていませんが、これ以外に使う予定がある方は以下を参照してください

動作確認

ではターミナルで以下のコマンドを実行しサーバーを起動します。

go run server.go

http server started on [::]:1323の文字がターミナルに表示されたらサーバーの立ち上げ成功です。

早速ブラウザからhttp://localhost:1323/http://localhost:1323/Fetchにアクセスしてください。
下のようになるはずです。

http://localhost:1323/
http://localhost:1323/Fetch

最後

とりあえず今回はちょっとかじってみたということでさらっと進めてみました。
次回は未定ですが、GOとEchoでAPIを実装して色々遊んでみたいと思います。

この記事を読んで少しでも参考になれば幸いです。

他にもPythonやJavascript等いろいろ記事を書いているので是非読んでください

ここまで読んでくれてありがとう!!

タイトルとURLをコピーしました