44
25

More than 3 years have passed since last update.

【Go】echoを使ってさくっとAPIサーバを構築する

Last updated at Posted at 2020-04-25

はじめに

Goはインストールしてあるものとします。
echoはGoの軽量フレームワークとして有名です。

Goはフレームワークが群雄割拠しているので、一強なものがあるとわかりやすくていいですよね。
JavaのSpring、RubyのRails的な。

echoの動作確認

echoをインストール

echoをインストールします。

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

Hello, World!

1. 実装

任意のディレクトリに以下のファイルを作成します。

server.go
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(":1323"))
}

2. 起動

1.でファイルを作成したディレクトリで以下のコマンドを実行します。

$ go run server.go

3. 動作確認

http://localhost:1323/ にアクセスして「Hello, World!」が表示されていることを確認します。

GETパラメータを受け取ってJSONを返す

以下の通りです。
直観的でいいですよね!

server.go
package main

import (
    "net/http"

    "github.com/labstack/echo"
)

type User struct {
    Name  string `json:"name"`
    Email string `json:"email"`
}

func main() {
    e := echo.New()
    e.GET("/user", show)

    e.Logger.Fatal(e.Start(":1323"))
}

func show(c echo.Context) error {
    u := new(User)
    if err := c.Bind(u); err != nil {
        return err
    }
    return c.JSON(http.StatusOK, u)
}

http://localhost:1323/user?name=yagi_eng&email=hoge@gmail.com
などとアクセスすると、以下のようにJSONが返ってきます。

{"name":"yagi_eng","email":"hoge@gmail.com"}

POSTパラメータを受け取ってJSONを返す

GETをPOSTに変えるだけです。

server.go
import (
    "net/http"

    "github.com/labstack/echo"
)

type User struct {
    Name  string `json:"name"`
    Email string `json:"email"`
}

func main() {
    e := echo.New()
    e.POST("/users", display)

    e.Logger.Fatal(e.Start(":1323"))
}

func display(c echo.Context) error {
    u := new(User)
    if err := c.Bind(u); err != nil {
        return err
    }
    return c.JSON(http.StatusOK, u)
}

参考

44
25
2

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
44
25