前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gin框架入门系列-处理请求结果

Gin框架入门系列-处理请求结果

作者头像
用户10002156
发布2023-11-06 13:57:38
2170
发布2023-11-06 13:57:38
举报
文章被收录于专栏:生活处处有BUG生活处处有BUG

本章介绍处理完http请求后如何响应请求,Gin框架支持以字符串、json、xml、文件等格式响应请求。

gin.Context上下文对象支持多种返回处理结果,下面分别介绍不同的响应方式。

1.以字符串方式响应请求

通过String函数返回字符串。

函数定义:

代码语言:javascript
复制
func (c *Context) String(code int, format string, values ...interface{})

参数说明:

参数

说明

code

http状态码

format

返回结果,支持类似Sprintf函数一样的字符串格式定义,例如,%d 代表插入整数,%s代表插入字符串

values

任意个format参数定义的字符串格式参数

例子:

代码语言:javascript
复制
func Handler(c *gin.Context)  {
    // 例子1:
    c.String(200, "欢迎访问xj.com!")
    
    // 例子2: 这里定义了两个字符串参数(两个%s),后面传入的两个字符串参数将会替换对应的%s
    c.String(200,"欢迎访问%s, 你是%s", "xj.com!","最靓的仔!")
}

提示:net/http包定义了多种常用的状态码常量,例如:http.StatusOK == 200, http.StatusMovedPermanently == 301, http.StatusNotFound == 404等,具体可以参考net/http包

2.以json格式响应请求

我们开发api接口的时候常用的格式就是json,下面是返回json格式数据的例子

代码语言:javascript
复制
// User 定义
type User struct {
  Name  string `json:"name"` // 通过json标签定义struct字段转换成json字段的名字。
  Email string `json:"email"`
}

// Handler 控制器
func(c *gin.Context) {
  //初始化user对象
  u := &User{
    Name:  "xj",
    Email: "xj@xj.com",
  }
  //返回json数据
  //返回结果:{"name":"xj", "email":"xj@xj.com"}
  c.JSON(200, u)
}

3.以xml格式响应请求

代码语言:javascript
复制
// User 定义, 默认struct的名字就是xml的根节点名字,这里转换成xml后根节点的名字为User.
type User struct {
  Name  string `xml:"name"` // 通过xml标签定义struct字段转换成xml字段的名字。
  Email string `xml:"email"`
}

// Handler 控制器
func(c *gin.Context) {
  //初始化user对象
  u := &User{
    Name:  "xj",
    Email: "xj@xj.com",
  }
  //返回xml数据
  //返回结果:
  //  <?xml version="1.0" encoding="UTF-8"?>
  //  <User><name>xj</name><email>xj@xj.com</email></User>
  c.XML(200, u)
}

4.以文件格式响应请求

下面介绍gin框架如何直接返回一个文件,可以用来做文件下载。

代码语言:javascript
复制
例子1:
func(c *gin.Context) {
  //通过File函数,直接返回本地文件,参数为本地文件地址。
  //函数说明:c.File("文件路径")
  c.File("/var/www/1.jpg")
}

例子2:
func(c *gin.Context) {
  //通过FileAttachment函数,返回本地文件,类似File函数,区别是可以指定下载的文件名。
  //函数说明: c.FileAttachment("文件路径", "下载的文件名")
  c.FileAttachment("/var/www/1.jpg", "1.jpg")
}

5.设置http响应头(设置Header)

代码语言:javascript
复制
func(c *gin.Context) {
  //设置http响应 header, key/value方式,支持设置多个header
  c.Header("site","xj")
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.以字符串方式响应请求
  • 2.以json格式响应请求
  • 3.以xml格式响应请求
  • 4.以文件格式响应请求
  • 5.设置http响应头(设置Header)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档