• 4_多数据格式返回请求结果.md


    多数据格式返回请求结果

    来源:https://www.qfgolang.com/?special=ginkuangjia&pid=2927

    gin框架中,支持返回多种请求数据格式。

    []byte

    ...
    engine := gin.Default()
    engine.GET("/hello", func(context *gin.Context) {
            fullPath := "请求路径:" + context.FullPath()
            fmt.Println(fullPath)
            context.Writer.Write([]byte(fullPath))
    })
    engine.Run()
    ...
    

    ​ 使用context.Writer.Write向客户端写入返回数据。Writer是gin框架中封装的一个ResponseWriter接口类型。

    string

    WriteString方法返回数据。

    context.Writer.WriteString(fullPath)
    

    json

    ​ gin框架中的context包含的JSON方法可以将结构体类型的数据转换成JSON格式的结构化数据,然后返回给客户端。

    map类型

    context.JSON(200, map[string]interface{}{
            "code":    1,
            "message": "OK",
            "data":    fullPath,
        })
    

    结构体类型

    //通用请求返回结构体定义
    type Response struct {
        Code    int         json:"code"
        Message string      json:"msg"
        Data    interface{} json:"data"
    }
    
    engine.GET("/jsonstruct", func(context *gin.Context) {
        fullPath := "请求路径:" + context.FullPath()
        fmt.Println(fullPath)
        resp := Response{Code: 1, Message: "Ok", Data: fullPath}
        context.JSON(200, &resp)
    })
    

    HTML模板

    gin框架还支持返回HTML格式的数据。

    ...
    engine := gin.Default()
    //设置html的目录
    engine.LoadHTMLGlob("./html/*")
    engine.GET("/hellohtml", func(context *gin.Context) {
        fullPath := "请求路径:" + context.FullPath()
    
        context.HTML(http.StatusOK, "index.html", gin.H{
            "title":    "Gin教程",
            "fullpath": fullPath,
        })
    })
    engine.Run(":9000")
    ...
    

    加载静态资源文件

    engine.Static("/img", "./img")
    

    在项目开发时,一些静态的资源文件如html、js、css等可以通过静态资源文件设置的方式来进行设置。

    重定向

    http重定向

    r.GET("/test", func(c *gin.Context) {
    	c.Redirect(http.StatusMovedPermanently, "http://www.sogo.com/")
    })
    

    路由重定向

    r.GET("/test", func(c *gin.Context) {
        // 指定重定向的URL
        c.Request.URL.Path = "/test2"
        r.HandleContext(c)
    })
    r.GET("/test2", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{"hello": "world"})
    })
    
  • 相关阅读:
    cf3b(贪心)
    cf4b
    poj 1037(经典dp)
    网络流之SAP算法学习
    cf3d
    hdu 1572(dfs+最短路)
    hdu 1735(贪心)
    Elementary Methods in Number Theory Exercise 1.5.10
    Elementary Methods in Number Theory Exercise 1.5.12
    Elementary Methods in Number Theory Exercise 1.5.10
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14451507.html
Copyright © 2020-2023  润新知