ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-05-26 10:34:52  阅读:231  来源: 互联网

标签:engine md func 请求 GET context gin 数据格式 fullPath


多数据格式返回请求结果

来源: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"})
})

标签:engine,md,func,请求,GET,context,gin,数据格式,fullPath
来源: https://www.cnblogs.com/nsfoxer/p/16312557.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有