当前位置:   article > 正文

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

gin响应文件

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

1. 响应类型为string

  • stringResponse.go
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")
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/string

# 浏览器的响应结果
This is string response
  • 1
  • 2
  • 3
  • 4
  • 监听结果
[GIN] 2024/03/21 - 16:38:34 | 200 |            0s |       127.0.0.1 | GET      "/string"
  • 1

2. 响应类型为JSON

2.1 不带json的tag

  • jsonResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

2.2 带json的tag

  • jsonResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

2.3 不需要使用的tag

  • jsonResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

2.4 响应map

  • jsonResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

2.5 直接响应json

  • jsonResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

3. 响应类型为xml

  • xmlResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

# 浏览器的响应结果
<map>
  <UserName>张三</UserName>
  <Age>20</Age>
  <Sex></Sex>
</map>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 监听结果
[GIN] 2024/03/21 - 17:14:14 | 200 |      1.0007ms |       127.0.0.1 | GET      "/xml"
  • 1

4. 响应类型为yaml

  • xmlResponse.go
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")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 运行程序
  • 浏览器访问
# 在浏览器的地址栏输入 http://127.0.0.1:8080/json

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

5. 代码

  • response.go
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/624890
推荐阅读
相关标签
  

闽ICP备14008679号