Gin学习笔记--多数据格式返回请求结果
一个完整的请求包含请求,处理请求和结果返回三个步骤,在服务器端对请求处理完成后,会将结果返回给前端。
1.[]byte
通过context.Writer.Write方法写入[]byte数据。Writer是gin框架封装的一个ResponseWriter接口类型。
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { engine := gin.Default() engine.GET("/helloByte", func(ctx *gin.Context) { fmt.Println(ctx.FullPath()) ctx.Writer.Write([]byte(ctx.FullPath())) }) engine.Run() }
String:engine.GET("/helloString", func(ctx *gin.Context) {
fullPath := ctx.FullPath() ctx.Writer.WriteString(fullPath) })
JSON:
除了使用context.Writer对象返回[]byte和String类型的数据外,gin框架支持将返回数据组装成json格式进行返回。
gin框架中的context包含的JSON方法可以将结构体类型的数据转换成JSON格式的结构化数据,然后返回给客户端。
map类型与结构体类型
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { engine := gin.Default() //map类型数据转换 engine.GET("/helloJson", func(ctx *gin.Context) { fullPath := "请求路径:" + ctx.FullPath() fmt.Println(fullPath) ctx.JSON(200, map[string]interface{}{ "code": 1, "message": "请求成功", "data": fullPath, }) }) //结构体类型数据转换 engine.GET("/jsonStruct", func(ctx *gin.Context) { fullPath := "请求路径:" + ctx.FullPath() fmt.Println(fullPath) response := Response{Code: 2, Message: "请求失败", Data: fullPath} ctx.JSON(200, &response) }) engine.Run(":9000") } type Response struct { Code int Message string Data interface{} }
Html
import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) func main() { engine := gin.Default() engine.LoadHTMLGlob("./GinRespFormat/html/*") //map类型数据转换 engine.GET("/helloJson", func(ctx *gin.Context) { fullPath := "请求路径:" + ctx.FullPath() fmt.Println(fullPath) ctx.HTML(http.StatusOK, "index.html", gin.H{ "fullPath": fullPath, "title": "gin教程", }) }) engine.Run() }