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言語


コメント