Go语言Web框架Gin(Day7)

目录

>开启一个Gin服务

 >启动Gin服务

>HTML页面的渲染

>JSON

>Restful

>接收前端传递过来的参数

>前端给后端传递 json

>form表单

>重定向

 >404 NoRoute

>路由组


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")
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值