上下文

基本定义

gin封装的上下文对象。支持所有*gin.Context操作

最新api请参考,gin官网 https://github.com/gin-gonic/gin

操作常用

获取query参数


func(this *IndexController) Index(ctx *gin.Context) string   {
	ctx.DefaultQuery("firstname", "Guest") 
	ctx.Query("lastname") 
	return "this is 首页"
}

ctx.Query("lastname") 相当于 ctx.Request.URL.Query().Get("lastname")

ctx.DefaultQuery("firstname", "Guest") 当firstname不存在时返回Guest,一般多用于分页 默认第一页

获取post参数

func(this *IndexController) Index(ctx *gin.Context) string   {
	message := ctx.PostForm("message")
	nick := ctx.DefaultPostForm("nick", "anonymous")
	return "this is 首页"
}

获取上传文件

单文件上传

func(this *IndexController) Index(ctx *gin.Context) string   {
	  file, _ := ctx.FormFile("file")
		log.Println(file.Filename)
		dest:="./"+file.Filename
		ctx.SaveUploadedFile(file, dst)
	  return "this is 首页"
}

SaveUploadedFile 将文件移动到指定目标

多文件上传

func(this *IndexController) Index(ctx *gin.Context) string   {
	form, _ := ctx.MultipartForm()
		files := form.File["upload[]"]
		for _, file := range files {
			log.Println(file.Filename)
			dest:="./"+file.Filename
			ctx.SaveUploadedFile(file, dst)
		}
	return "this is 首页"
}

将参数绑定到指定对象

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

func(this *IndexController) Index(ctx *gin.Context) string   {
	if ctx.ShouldBind(&person) == nil {
		log.Println("====== Only Bind By Query String ======")
		log.Println(person.Name)
		log.Println(person.Address)
	}
	return "this is 首页"
}
type Person struct {
	ID string `uri:"id" binding:"required,uuid"`
	Name string `uri:"name" binding:"required"`
}

func(this *IndexController) Index(ctx *gin.Context) string   {
	if err := ctx.ShouldBindUri(&person); err != nil {
			return  "参数错误"
		}
	return "this is 首页"
}
type testHeader struct {
	Rate   int    `header:"Rate"`
	Domain string `header:"Domain"`
}

func(this *IndexController) Index(ctx *gin.Context) string   {
	if err := ctx.ShouldBindHeader(&testHeader); err != nil {
			return  "heander头错误"
		}
	return "this is 首页"
}
func(this *IndexController) Index(ctx *gin.Context) string   {
	cookie, err := ctx.Cookie("gin_cookie")
	return cookie
}
func(this *IndexController) Index(ctx *gin.Context) string   {
	ctx.SetCookie("gin_cookie", "test", 3600, "/", "localhost", false, true)
	return "this is 首页"
}

最后更新于

这有帮助吗?