Go言語の ORM である gorm を使って mysql にアクセスし、
それを httpサーバーフレームワークである echo で、jsonレスポンスを生成します。
Echo, High performance, minimalist Go web framework
https://echo.labstack.com
macOS catalina で確認済み
まずはベースとなるフォルダを作成
% mkdir test_go % cd test_go
go.mod ファイルを生成
% go mod init go_test
mysql で users というテーブルを作成し、
id, email, name というフィールドを作成してください
id はInt型、emailとnameはVARCHAR型です。
id=1 のカラムを作成し、適当な email と name を入れてください。
以下のファイルを作成してください。
go_test/main.go
package main import ( "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" "go_test/user" "go_test/users" ) func main() { e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.GET("/users/:id", user.SelectUser) e.GET("/users", users.SelectUsers) // Start server e.Logger.Fatal(e.Start(":3000")) }
username, password, dbname の部分は
各自の mysql のパラメータに置き換えてください。
go_test/users/users.go
package users import ( "github.com/labstack/echo/v4" "gorm.io/driver/mysql" "gorm.io/gorm" "net/http" ) type ( User struct { Id int `json:"id"` Name string `json:"name"` } Response struct { Users []User `json:"users"` } ) var ( dsn = "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" ) func SelectUsers(c echo.Context) error { db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } var users []User db.Find(&users) response := new(Response) response.Users = users return c.JSON(http.StatusOK, response) }
go_test/user/user.go
package user import ( "github.com/labstack/echo/v4" "gorm.io/driver/mysql" "gorm.io/gorm" "net/http" ) type ( User struct { Id int `json:"id"` Name string `json:"name"` } Response struct { User User `json:"user"` } ) var ( dsn = "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" ) func SelectUser(c echo.Context) error { id := c.Param("id") db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } var user User db.First(&user, id) response := new(Response) response.User = user return c.JSON(http.StatusOK, response) }
実行
% go run main.go
ブラウザで
http://localhost:3000/users
または
http://localhost:3000/user/1
とアクセスして json が表示されれば成功です!
Go言語でオススメの本
Goならわかるシステムプログラミング
改訂2版 みんなのGo言語
コメント