Go语言学习--Gin框架之响应

Go语言学习--Gin框架之响应

文章目录

  • Go语言学习--Gin框架之响应
    • [1. 响应类型为string](#1. 响应类型为string)
    • [2. 响应类型为JSON](#2. 响应类型为JSON)
      • [2.1 不带json的tag](#2.1 不带json的tag)
      • [2.2 带json的tag](#2.2 带json的tag)
      • [2.3 不需要使用的tag](#2.3 不需要使用的tag)
      • [2.4 响应map](#2.4 响应map)
      • [2.5 直接响应json](#2.5 直接响应json)
    • [3. 响应类型为xml](#3. 响应类型为xml)
    • [4. 响应类型为yaml](#4. 响应类型为yaml)
    • [5. 代码](#5. 代码)

1. 响应类型为string

  • stringResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/string路径时, 执行以下函数
func StringResponse(c *gin.Context) {
	c.String(http.StatusOK, "This is string response")
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/string:请求的路径
	// 当客户端以GET方法请求/string路径时,会执行StringResponse函数
	r.GET("/string", StringResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/string

# 浏览器的响应结果
This is string response
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 16:38:34 | 200 |            0s |       127.0.0.1 | GET      "/string"

2. 响应类型为JSON

2.1 不带json的tag

  • jsonResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	type UserInfo struct {
		UserName string 
		Age      int   
	}
	user := UserInfo{UserName: "json", Age: 20}
	c.JSON(http.StatusOK, user)
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
{"UserName":"json","Age":20}
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 16:44:02 | 200 |       676.3µs |       127.0.0.1 | GET      "/json"

2.2 带json的tag

  • jsonResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	type UserInfo struct {
		UserName string `json:"user_name"`
		Age      int    `json:"age"`
	}
	user := UserInfo{UserName: "json", Age: 20}
	c.JSON(http.StatusOK, user)
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
{"user_name":"json","age":20}
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 16:48:58 | 200 |      1.0047ms |       127.0.0.1 | GET      "/json"

2.3 不需要使用的tag

  • jsonResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	type UserInfo struct {
		UserName string `json:"user_name"`
		Age      int    `json:"age"`
		// 当有些内容不适合暴露是,可以使用"-"来忽略转化成json格式
		Password string `json:"-"`
	}
	user := UserInfo{UserName: "json", Age: 20}
	c.JSON(http.StatusOK, user)
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
{"user_name":"json","age":20}
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 16:54:03 | 200 |            0s |       127.0.0.1 | GET      "/json"

2.4 响应map

  • jsonResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	c.JSON(http.StatusOK, map[string]string{"userName": "json", "age": "10"})
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
{"age":"10","userName":"json"}
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 17:01:41 | 200 |            0s |       127.0.0.1 | GET      "/json"

2.5 直接响应json

  • jsonResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"userName": "json",
		"age":      "10",
	})
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
{"age":"10","userName":"json"}
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 17:05:22 | 200 |            0s |       127.0.0.1 | GET      "/json"

3. 响应类型为xml

  • xmlResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/xml路径时, 执行以下函数
func XmlResponse(c *gin.Context) {
	c.XML(http.StatusOK, gin.H{
		"UserName": "张三",
		"Age":      20,
		"Sex":      "男",
	})
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/xml:请求的路径
	// 当客户端以GET方法请求/xml路径时,会执行XmlResponse函数
	r.GET("/xml", XmlResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
<map>
  <UserName>张三</UserName>
  <Age>20</Age>
  <Sex>男</Sex>
</map>
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 17:14:14 | 200 |      1.0007ms |       127.0.0.1 | GET      "/xml"

4. 响应类型为yaml

  • xmlResponse.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/xml路径时, 执行以下函数
func XmlResponse(c *gin.Context) {
	c.XML(http.StatusOK, gin.H{
		"UserName": "张三",
		"Age":      20,
		"Sex":      "男",
	})
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/xml:请求的路径
	// 当客户端以GET方法请求/xml路径时,会执行XmlResponse函数
	r.GET("/xml", XmlResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 运行程序
  • 浏览器访问
shell 复制代码
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
# 浏览器会执行下载操作,文件内容如下:
Age: 20
Sex: 男
UserName: 张三
  • 监听结果
shell 复制代码
[GIN] 2024/03/21 - 17:23:54 | 200 |            0s |       127.0.0.1 | GET      "/yaml"

5. 代码

  • response.go
shell 复制代码
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 当客户端以GET方法请求/string路径时, 执行以下函数
func StringResponse(c *gin.Context) {
	c.String(http.StatusOK, "This is string response")
}

// 当客户端以GET方法请求/json路径时, 执行以下函数
func JsonResponse(c *gin.Context) {
	//type UserInfo struct {
	//	UserName string `json:"user_name"`
	//	Age      int    `json:"age"`
	//	Password string `json:"-"`
	//}
	//user := UserInfo{UserName: "json", Age: 20, Password: "123456"}
	//c.JSON(http.StatusOK, user)

	//c.JSON(http.StatusOK, map[string]string{"userName": "json", "age": "10"})

	c.JSON(http.StatusOK, gin.H{
		"userName": "json",
		"age":      "10",
	})
}

// 当客户端以GET方法请求/xml路径时, 执行以下函数
func XmlResponse(c *gin.Context) {
	c.XML(http.StatusOK, gin.H{
		"UserName": "张三",
		"Age":      20,
		"Sex":      "男",
	})
}

// 当客户端以GET方法请求/yaml路径时, 执行以下函数
func YamlResponse(c *gin.Context) {
	c.YAML(http.StatusOK, gin.H{
		"UserName": "张三",
		"Age":      20,
		"Sex":      "男",
	})
}

func main() {
	// 创建默认路由引擎
	r := gin.Default()

	// GET:请求方式;/string:请求的路径
	// 当客户端以GET方法请求/string路径时,会执行StringResponse函数
	r.GET("/string", StringResponse)

	// GET:请求方式;/json:请求的路径
	// 当客户端以GET方法请求/json路径时,会执行JsonResponse函数
	r.GET("/json", JsonResponse)

	// GET:请求方式;/xml:请求的路径
	// 当客户端以GET方法请求/xml路径时,会执行XmlResponse函数
	r.GET("/xml", XmlResponse)

	// GET:请求方式;/yaml:请求的路径
	// 当客户端以GET方法请求/yaml路径时,会执行YamlResponse函数
	r.GET("/yaml", YamlResponse)

	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
相关推荐
并不会2 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
龙鸣丿2 小时前
Linux基础学习笔记
linux·笔记·学习
Nu11PointerException4 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
Chrikk5 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*5 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue5 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man5 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
@小博的博客7 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生8 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步9 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝