Go語言Gin處理響應(yīng)方式詳解
前言
本文介紹Gin框架處理響應(yīng)數(shù)據(jù),支持以字符串、json、xml、文件等格式響應(yīng)請(qǐng)求。
gin.Context 上下文對(duì)象支持多種返回處理結(jié)果,下面分別介紹不同的響應(yīng)方式。
1.以字符串方式響應(yīng)請(qǐng)求
通過String函數(shù)返回字符串。
函數(shù)定義:
func (c *Context) String(code int, format string, values …interface{})
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "hello world")
})2.以json格式響應(yīng)請(qǐng)求
開發(fā)api接口的時(shí)候常用的格式就是json,下面是返回json格式數(shù)據(jù)的例子。
// localhost:8080/user
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
r.GET("/user", func(c *gin.Context) {
u := &User{
Name: "lucifer",
Age: 18,
}
c.JSON(http.StatusOK, u)
})3.以xml格式響應(yīng)請(qǐng)求
開發(fā)api接口的時(shí)候,也有使用xml格式的響應(yīng),下面是返回xml格式數(shù)據(jù)的例子。
// localhost:8080/student
type Student struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
r.GET("/student", func(c *gin.Context) {
s := &Student{
Name: "lucifer",
Age: 19,
}
c.XML(http.StatusOK, s)
})
4.以文件格式響應(yīng)請(qǐng)求
下面介紹說明,gin框架如何直接返回一個(gè)文件,可以用來做文件下載。
// 4.1 直接返回
r.GET("/file", func(c *gin.Context) {
c.File("./readme.txt")
})
// 4.2 返回文件,指定下載文件名
r.GET("/filename", func(c *gin.Context) {
c.FileAttachment("./readme.txt", "change_file_name.txt")
})
5.示例
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
/*
Gin 處理請(qǐng)求參數(shù)
*/
func main() {
// 一、實(shí)例化服務(wù)
r := gin.Default()
// 二、路由
// 1.直接返回string
// localhost:8080
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "hello world")
})
// 2.返回json 數(shù)據(jù)
// localhost:8080/user
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
r.GET("/user", func(c *gin.Context) {
u := &User{
Name: "lucifer",
Age: 18,
}
c.JSON(http.StatusOK, u)
})
// 3.返回xml數(shù)據(jù)
// localhost:8080/student
type Student struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
r.GET("/student", func(c *gin.Context) {
s := &Student{
Name: "lucifer",
Age: 19,
}
c.XML(http.StatusOK, s)
})
// 4.返回文件
// 4.1 直接返回
r.GET("/file", func(c *gin.Context) {
c.File("./readme.txt")
})
// 4.2 返回文件,指定下載文件名
r.GET("/filename", func(c *gin.Context) {
c.FileAttachment("./readme.txt", "change_file_name.txt")
})
// 三、啟動(dòng)服務(wù)
r.Run(":8080")
}
總結(jié)
到此這篇關(guān)于Go語言Gin處理響應(yīng)方式的文章就介紹到這了,更多相關(guān)Go語言Gin處理響應(yīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
聊聊go xorm生成mysql的結(jié)構(gòu)體問題
這篇文章主要介紹了go xorm生成mysql的結(jié)構(gòu)體問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-03-03
GoLang并發(fā)機(jī)制探究goroutine原理詳細(xì)講解
goroutine是Go語言提供的語言級(jí)別的輕量級(jí)線程,在我們需要使用并發(fā)時(shí),我們只需要通過 go 關(guān)鍵字來開啟 goroutine 即可。這篇文章主要介紹了GoLang并發(fā)機(jī)制goroutine原理,感興趣的可以了解一下2022-12-12
golang框架gin的日志處理和zap lumberjack日志使用方式
這篇文章主要介紹了golang框架gin的日志處理和zap lumberjack日志使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Golang中漏洞數(shù)據(jù)庫(kù)的使用詳解
govulncheck是Golang中的漏洞掃描工具,它強(qiáng)大功能的背后,離不開?Go?漏洞數(shù)據(jù)庫(kù)(Go?vulnerability?database)的支持,所以本文就來為大家詳細(xì)講解下?Go?漏洞數(shù)據(jù)庫(kù)相關(guān)的知識(shí)2023-09-09
Golang使用反射的動(dòng)態(tài)方法調(diào)用詳解
Go是一種靜態(tài)類型的語言,提供了大量的安全性和性能。這篇文章主要和大家介紹一下Golang使用反射的動(dòng)態(tài)方法調(diào)用,感興趣的小伙伴可以了解一下2023-03-03

