Gin的中间件和Uri

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gin的中间件和Uri相关的知识,希望对你有一定的参考价值。

Gin的中间件和Uri

// Default 使用 Logger 和 Recovery 中间件
r := gin.Default()

//不使用默认中间件
r := gin.New()

Logger中间件就是控制台终端打印的日志,Recovery中间件就是发生panic或者异常时会自动捕获并返回给浏览器一个500错误等错误响应的中间件。

只绑定 url 查询字符串

package main

import (
	"log"

	"github.com/gin-gonic/gin"
)

type Person struct {
	Name    string `form:"name"`
	Address string `form:"address"`
}

func main() {
	route := gin.Default()
	route.Any("/testing", startPage)
	route.Run(":8085")
}

func startPage(c *gin.Context) {
	var person Person
	if c.ShouldBindQuery(&person) == nil {
		log.Println("====== Only Bind By Query String ======")
		log.Println(person.Name)
		log.Println(person.Address)
	}
	c.String(200, "Success")
}

也就是说对于post请求中的表单数据会忽略,而只绑定查询字符串中的数据。

Postman模拟



绑定Uri

package main

import "github.com/gin-gonic/gin"

type Person struct {
	ID   string `uri:"id" binding:"required,uuid"`
	Name string `uri:"name" binding:"required"`
}

func main() {
	route := gin.Default()
	route.GET("/:name/:id", func(c *gin.Context) {
		var person Person
		if err := c.ShouldBindUri(&person); err != nil {
			c.JSON(400, gin.H{"msg": err})
			return
		}
		c.JSON(200, gin.H{"name": person.Name, "uuid": person.ID})
	})
	route.Run(":8088")
}

结果

以上是关于Gin的中间件和Uri的主要内容,如果未能解决你的问题,请参考以下文章

gin中间件

gin中间件

gin中间件

gin中间件

Golang Gin 框架之中间件

Gin框架源码解读(一)