Go语言Gin处理响应方式详解

 更新时间:2023年01月07日 11:32:31   作者:jeikerxiao  
gin框架封装了常用的数据格式方法响应于客户端,下面这篇文章主要给大家介绍了关于Go语言Gin处理响应方式的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

前言

本文介绍Gin框架处理响应数据,支持以字符串、json、xml、文件等格式响应请求。

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

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

通过String函数返回字符串。

函数定义:

func (c *Context) String(code int, format string, values …interface{})

r.GET("/", func(c *gin.Context) {
	c.String(http.StatusOK, "hello world")
})

2.以json格式响应请求

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

// localhost:8080/user
type User struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}
r.GET("/user", func(c *gin.Context) {
	u := &User{
		Name: "lucifer",
		Age:  18,
	}
	c.JSON(http.StatusOK, u)
})

3.以xml格式响应请求

开发api接口的时候,也有使用xml格式的响应,下面是返回xml格式数据的例子。

// localhost:8080/student
type Student struct {
	Name string `xml:"name"`
	Age  int    `xml:"age"`
}
r.GET("/student", func(c *gin.Context) {
	s := &Student{
		Name: "lucifer",
		Age:  19,
	}
	c.XML(http.StatusOK, s)
})

4.以文件格式响应请求

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

// 4.1 直接返回
r.GET("/file", func(c *gin.Context) {
	c.File("./readme.txt")
})
// 4.2 返回文件,指定下载文件名
r.GET("/filename", func(c *gin.Context) {
	c.FileAttachment("./readme.txt", "change_file_name.txt")
})

5.示例

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
Gin 处理请求参数
*/
func main() {
	// 一、实例化服务
	r := gin.Default()

	// 二、路由

	// 1.直接返回string
	// localhost:8080
	r.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, "hello world")
	})

	// 2.返回json 数据
	// localhost:8080/user
	type User struct {
		Name string `json:"name"`
		Age  int    `json:"age"`
	}
	r.GET("/user", func(c *gin.Context) {
		u := &User{
			Name: "lucifer",
			Age:  18,
		}
		c.JSON(http.StatusOK, u)
	})

	// 3.返回xml数据
	// localhost:8080/student
	type Student struct {
		Name string `xml:"name"`
		Age  int    `xml:"age"`
	}
	r.GET("/student", func(c *gin.Context) {
		s := &Student{
			Name: "lucifer",
			Age:  19,
		}
		c.XML(http.StatusOK, s)
	})
	
	// 4.返回文件
	// 4.1 直接返回
	r.GET("/file", func(c *gin.Context) {
		c.File("./readme.txt")
	})
	// 4.2 返回文件,指定下载文件名
	r.GET("/filename", func(c *gin.Context) {
		c.FileAttachment("./readme.txt", "change_file_name.txt")
	})

	// 三、启动服务
	r.Run(":8080")
}

总结

到此这篇关于Go语言Gin处理响应方式的文章就介绍到这了,更多相关Go语言Gin处理响应内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Gorm更新零值问题解决思路与过程

    Gorm更新零值问题解决思路与过程

    这篇文章主要介绍了Gorm更新零值问题解决思路与过程,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2023-01-01
  • Go语言标准库flag的具体实现

    Go语言标准库flag的具体实现

    Go语言的flag库提供了一套简单而强大的接口,用于解析命令行参数,本文主要介绍了Go语言标准库flag的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • golang之JWT实现的示例代码

    golang之JWT实现的示例代码

    这篇文章主要介绍了golang之JWT实现的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Golang语言JSON解码函数Unmarshal的使用

    Golang语言JSON解码函数Unmarshal的使用

    本文主要介绍了Golang语言JSON解码函数Unmarshal的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • GO制作微信机器人的流程分析

    GO制作微信机器人的流程分析

    这篇文章主要介绍了利用go制作微信机器人,本文主要包括项目基础配置及详细代码讲解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 详解Go sync 同步原语

    详解Go sync 同步原语

    Go 中不仅有 channel 这种 CSP 同步机制,还有 sync.Mutex、sync.WaitGroup 等比较原始的同步原语,使用它们,可以更灵活的控制数据同步和多协程并发,这篇文章主要介绍了Go sync 同步原语,需要的朋友可以参考下
    2023-12-12
  • Golang 获取文件md5校验的方法以及效率对比

    Golang 获取文件md5校验的方法以及效率对比

    这篇文章主要介绍了Golang 获取文件md5校验的方法以及效率对比,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • 简单聊聊Go for range中容易踩的坑

    简单聊聊Go for range中容易踩的坑

    for循环问题,在面试中经常都会被问到,并且在实际业务项目中也经常用到for循环,要是没用好,一不下心就掉坑,本文就来讲讲Go for range中容易踩的坑吧
    2023-03-03
  • golang 如何删除二进制文件中的源码路径信息

    golang 如何删除二进制文件中的源码路径信息

    这篇文章主要介绍了golang 如何删除二进制文件中的源码路径信息,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • golang实现微信小程序商城后台系统(moshopserver)

    golang实现微信小程序商城后台系统(moshopserver)

    这篇文章主要介绍了golang实现微信小程序商城后台系统(moshopserver),本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论