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)文章
云端golang開發(fā),無需本地配置,能上網(wǎng)就能開發(fā)和運(yùn)行
這篇文章主要介紹了云端golang開發(fā),無需本地配置,能上網(wǎng)就能開發(fā)和運(yùn)行的相關(guān)資料,需要的朋友可以參考下2023-10-10在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作
正則表達(dá)式是處理字符串時(shí)一個(gè)非常強(qiáng)大的工具,而?Go?語言的?regexp?包提供了簡(jiǎn)單而強(qiáng)大的接口來使用正則表達(dá)式,本文將介紹如何在?Go?中使用?regexp?包來編譯和執(zhí)行正則表達(dá)式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧2023-12-12Go中阻塞以及非阻塞操作實(shí)現(xiàn)(Goroutine和main Goroutine)
本文主要介紹了Go中阻塞以及非阻塞操作實(shí)現(xiàn)(Goroutine和main Goroutine),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05go使用errors.Wrapf()代替log.Error()方法示例
這篇文章主要為大家介紹了go使用errors.Wrapf()代替log.Error()的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Go并發(fā)控制WaitGroup的使用場(chǎng)景分析
WaitGroup,可理解為Wait-Goroutine-Group,即等待一組goroutine結(jié)束,本文通過具體場(chǎng)景結(jié)合實(shí)際例子給大家介紹使用WaitGroup控制的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2021-07-07Golang連接池的幾種實(shí)現(xiàn)案例小結(jié)
這篇文章主要介紹了Golang連接池的幾種實(shí)現(xiàn)案例小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03深入了解Go項(xiàng)目標(biāo)準(zhǔn)目錄布局
本文主要介紹了Go項(xiàng)目標(biāo)準(zhǔn)目錄布局,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05