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")
}
相关推荐
想进部的张同学1 小时前
hilinux-3599---设备学习---以及部署yolo
学习·yolo·海思
HyperAI超神经2 小时前
【vLLM 学习】Rlhf
人工智能·深度学习·学习·机器学习·vllm
做cv的小昊4 小时前
【TJU】信息检索与分析课程笔记和练习(7)数据库检索—Ei
数据库·笔记·学习·全文检索
AI360labs_atyun4 小时前
上海打出“开源”国际牌!2025重磅新政
人工智能·科技·学习·ai·开源
Chris_12194 小时前
Halcon学习笔记-Day6:工业视觉高级技术应用与实战项目
笔记·学习·halcon
源代码•宸4 小时前
GoLang八股(Go语言基础)
开发语言·后端·golang·map·defer·recover·panic
GHL2842710905 小时前
调用通义千问(qwen-plus)模型demo-学习
学习·ai·ai编程
iso少年6 小时前
Go 语言并发编程核心与用法
开发语言·后端·golang
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [fs]super
linux·笔记·学习
GHL2842710906 小时前
Temperature、Top P 学习
学习·ai