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")
}
相关推荐
Lester_11011 小时前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos
jackson凌1 小时前
【Java学习笔记】Math方法
java·笔记·学习
孔令飞1 小时前
Go 为何天生适合云原生?
ai·云原生·容器·golang·kubernetes
Humbunklung1 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)
笔记·python·学习·pyqt
sealaugh321 小时前
aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain
笔记·学习·aws
阿超爱嵌入式2 小时前
STM32学习之I2C(理论篇)
stm32·嵌入式硬件·学习
qq_454175792 小时前
c++学习-this指针
开发语言·c++·学习
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
网络·学习·安全·web安全·渗透测试·csrf·网络安全学习
哆啦A梦的口袋呀3 小时前
基于Python学习《Head First设计模式》第六章 命令模式
python·学习·设计模式
YGGP4 小时前
吃透 Golang 基础:数据结构之 Map
开发语言·数据结构·golang