目录
Go的web框架给我带来的感觉就是简洁,简洁,太简洁了,写起来非常轻松,真的很舒服,很爽快,很利落。
>开启一个Gin服务
g := gin.Default()
>启动Gin服务
err := g.Run(":8080")
if err != nil {
}
>HTML页面的渲染
- 加载静态页面
g.LoadHTMLGlob("templates/*")
c.HTML,第一个传入状态码,一般是200,重定向是301,第二个是传入templates下的html文件,第三个是写gin.H{},括号中传入的key,就可以在html页面中通过使用key把key的value值渲染出来。
db := gorm.DbRun()
user := make([]*gorm.Student, 0)
db.Where("Age = ?", 18).Find(&user)
g.GET("/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"msg": user[0].Name,
})
})
>JSON
g.GET("/gin", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Gin"})
})
>Restful
Restful,通过用一个路由实现多种请求方式,用postman来测试或者apipost7
g.GET("/restful", func(c *gin.Context) {
return
})
g.POST("/restful", func(c *gin.Context) {
return
})
g.DELETE("/restful", func(c *gin.Context) {
return
})
g.PUT("/restful", func(c *gin.Context) {
return
})
>接收前端传递过来的参数
-
user?username=XXX&password=XXX
g.GET("/user", func(c *gin.Context) {
username := c.Query("username")
age := c.Query("age")
ages, _ := strconv.Atoi(age)
s := gorm.Student{Name: username, Age: ages}
db.Create(&s)
u := gorm.Student{}
db.Where("name = ?", "zz").Find(&u)
fmt.Println(u.Age, u.Name)
name := u.Name
agess := u.Age
c.JSON(http.StatusOK, gin.H{
"name": name,
"ages": agess,
})
})
-
user/id/name
g.GET("/user/:id/:name", func(c *gin.Context) {
id := c.Param("id")
name := c.Param("name")
c.JSON(http.StatusOK, gin.H{
"id": id,
"name": name,
})
})
>前端给后端传递 json
获取前端的POST请求体
g.POST("/json", func(c *gin.Context) {
// request body, 获取请求体
// b []byte
b, _ := c.GetRawData()
var m map[string]interface{}
// b []byte
_ = json.Unmarshal(b, &m)
c.JSON(http.StatusOK, gin.H{
"m": m,
})
})
>form表单
g.POST("/user/info", func(c *gin.Context) {
username := c.PostForm("username")
password := c.PostForm("password")
c.JSON(http.StatusOK, gin.H{
"username": username,
"password": password,
})
})
>重定向
g.GET("/test", func(c *gin.Context) {
// 重定向的状态码是301
c.Redirect(301, "https://www.kuangstudy.com")
})
>404 NoRoute
g.NoRoute(func(c *gin.Context) {
c.HTML()
})
>路由组
urlGroup := g.Group("/user")
{ // /user/add
urlGroup.GET("/add")
// /user/login
urlGroup.GET("/login")
}
orderGroup := g.Group("/order")
{ // /order/add
orderGroup.GET("/add")
}