这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
环境
go get github.com/sinlovgo/hertz
go get github.com/jinzhu/gorm
数据库连接
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
func main() {
db, err := gorm.Open("mysql", "user:123456@/database?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("failed to connect database")
}
defer db.Close()
}
定义USER的模型
type User struct {
gorm.Model
Username string `gorm:"unique_index;not null"`
Email string `gorm:"unique_index;not null"`
Password string `gorm:"not null"`
}
使用了GORM提供的Model结构体来定义模型的ID属性。还定义了Username、Email和Password属性,使用gorm标记来指定字段的属性,如not null和unique_index等
模型映射
func main() {
db, err := gorm.Open("mysql", "user:123456@/database?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("failed to connect database")
}
defer db.Close()
db.AutoMigrate(&User{})
}
redis使用
import (
"github.com/go-redis/redis"
)
func main() {
redisClient := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})
_, err := redisClient.Ping().Result()
if err != nil {
panic("failed to connect redis")
}
}
使用了go-redis库提供的NewClient方法来创建Redis连接
API的实现
import (
"github.com/sinlovgo/hertz"
)
func main() {
router := hertz.NewRouter()
// add API routes here
hertz.ListenAndServe(":8080", router)
}
使用Hertz提供的NewRouter方法来创建HTTP路由器,用Add方法来添加API路由,使用ListenAndServe方法来启动HTTP服务器。
创建用户
import (
"encoding/json"
"github.com/go-redis/redis"
"github.com/sinlovgo/hertz"
"github.com/jinzhu/gorm"
)
func main() {
// create database connection and Redis client
router := hertz.NewRouter()
router.Post("/users", func(c *hertz.Context) {
// parse request body
var user User
err := json.NewDecoder(c.Request.Body).Decode(&user)
if err != nil {
c.JSON(hertz.StatusBadRequest, hertz.M{"error": err.Error()})
return
}
// create user model
db.Create(&user)
// cache user data
redisKey := "user:" + strconv.Itoa(int(user.ID))
redisClient.Set(redisKey, user, 0)
// return response
c.JSON(hertz.StatusOK, user)
})
// start HTTP server
hertz.ListenAndServe(":8080", router)
}
实现创建用户的API。接收JSON格式的请求体,包含用户名、邮箱和密码等属性。使用GORM创建用户模型,并将其保存到数据库中,将使用Redis缓存用户数据,以提高应用程序性能, 使用了Hertz提供的Post方法来创建POST路由。用json包解析请求体,并创建用户模型。GORM提供的Create方法将用户模型保存到数据库中。用go-redis库提供的Set方法将用户数据保存到Redis缓存中.