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
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
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
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
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
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
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
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
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. 代码
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")
}