go で http で mysql から json を返す

go

今度は、db から json を生成して http://localhost:3000 から
表示するコードです。

ローカルに comments というテーブルがあり、
カラムに id, name があるという前提です。

db名等は各自の環境に合わせてください。

package main

import (
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	_ "github.com/go-sql-driver/mysql"
	"github.com/gocraft/dbr/v2"
	"net/http"
	"strconv"
)

type (
	comment struct {
		ID   int    `db:"id"`
		Name string `db:"name"`
	}

	responseComments struct {
		Comments []comment `json:"comments"`
	}
)


var (
	seq       = 1
	conn, _   = dbr.Open("mysql", "root:password@tcp(127.0.0.1:3306)/hogedb", nil)
	sess      = conn.NewSession(nil)
)


func main() {
	e := echo.New()

	e.Use(middleware.Logger())
	e.Use(middleware.Recover())

	e.GET("/comments", selectComments)

	// Start server
	e.Logger.Fatal(e.Start(":3000"))
}

func selectComments(c echo.Context) error {
	var comments []comment

	sess.Select("*").From("comments").Load(&comments)

	response := new(responseComments)
	response.Comments = comments

	return c.JSON(http.StatusOK, response)
}

go言語でおすすめ書籍は以下です。

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