유저를 관리하는 간단한 CRUD를 구현했다.
User 테이블의 요소는 ID, Name, Email
DB는 MySQL을 사용
package main
import (
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// Model
type User struct {
ID int `gorm:"primaryKey"` // pk
Name string `json:"name"`
Email string `json:"email"`
}
// db변수
var db *gorm.DB
// MySQL연결
func initDB() {
dsn := "username:password@tcp(127.0.0.1:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local"
db, _ = gorm.Open(mysql.Open(dsn), &gorm.Config{})
// AutoMigrate
db.AutoMigrate(&User{})
}
func main() {
// db초기화
initDB()
// Gin 라우터 생성
r := gin.Default()
// Create
r.POST("/users", func(c *gin.Context) {
var user User
// 요청 본문에서 JSON 데이터 파싱
c.BindJSON(&user)
// db에 저장
db.Create(&user)
// 반환
c.JSON(200, user)
})
// Read(전체)
r.GET("/users", func(c *gin.Context) {
var users []User
// db에서 모든 사용자 조회
db.Find(&users)
// 반환
c.JSON(200, users)
})
// Read(단일)
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
var user User
// db에서 ID로 사용자 조회
db.First(&user, id)
// 반환
c.JSON(200, user)
})
// Update
r.PUT("/users/:id", func(c *gin.Context) {
id := c.Param("id")
var user User
// 기존 사용자 조회
db.First(&user, id)
// 요청 본문에서 수정할 데이터 파싱
c.BindJSON(&user)
// db에 저장
db.Save(&user)
// 반환
c.JSON(200, user)
})
// Delete
r.DELETE("/users/:id", func(c *gin.Context) {
id := c.Param("id")
// db에서 ID로 사용자 삭제
db.Delete(&User{}, id)
// 반환
c.Status(204)
})
// 서버 실행
r.Run(":8080")
}
언어 : go
웹프레임워크 : Gin
ORM : gorm
DB : MySQL