Gin 实现 RestFul 接口

engine -> handler -> db -> response

结构体实现

1
2
3
4
type User struct {
UserName string `json:user_name`
Pwd string `json:pwd`
}

启动 Engine

1
2
3
4
5
func main() {
r := gin.Default()
r.GET("/users/:id", GetUser)
r.Run() // listen and serve on 0.0.0.0:8080
}

操作 mysql 数据库

初始化连接,init func执行在main之前

1
2
3
4
5
6
func init(){
dbConn,err = sql.Open("mysql","root:123@/users?charset=utf8")
if err!=nil{
panic(err.Error())
}
}

实现 select 操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func GetUser(id string) (string,error){
stmt,err:=dbConn.Prepare("SELECT pwd FROM users WHERE login_name=?")
if err!=nil{
fmt.Println(err)
return "",err
}
var pwd string
err = stmt.QueryRow(id).Scan(&pwd)

if err!=nil{
fmt.Println(err)
return "",err
}
defer stmt.Close()
return pwd,nil
}

实现 handler 函数

1
2
3
4
5
6
7
8
9
10
func GetUser(c *gin.Context)  {
id := c.Param("id")
res,err:= dbops.GetUser(id)
if(err!=nil){
return
}
c.JSON(200, gin.H{
"message": res,
})
}