欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言Gin處理響應(yīng)方式詳解

 更新時(shí)間:2023年01月07日 11:32:31   作者:jeikerxiao  
gin框架封裝了常用的數(shù)據(jù)格式方法響應(yīng)于客戶端,下面這篇文章主要給大家介紹了關(guān)于Go語言Gin處理響應(yīng)方式的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

本文介紹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?語言入門之net/url?包

    Go?語言入門之net/url?包

    這篇文章主要介紹了Go?語言入門之net/url?包,文章基于GO語言的相關(guān)資料展開?net/url?包的詳細(xì)內(nèi)容,具有一定的的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • go語言中的指針自動(dòng)解引用

    go語言中的指針自動(dòng)解引用

    Go語言中,編譯器會(huì)自動(dòng)解引用指針來訪問字段,自動(dòng)解引用使得使用指針訪問結(jié)構(gòu)體字段和方法變得更加直觀,降低了編程錯(cuò)誤的風(fēng)險(xiǎn),并使代碼更易于理解和維護(hù)
    2024-10-10
  • 云端golang開發(fā),無需本地配置,能上網(wǎng)就能開發(fā)和運(yùn)行

    云端golang開發(fā),無需本地配置,能上網(wǎng)就能開發(fā)和運(yùn)行

    這篇文章主要介紹了云端golang開發(fā),無需本地配置,能上網(wǎng)就能開發(fā)和運(yùn)行的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作

    在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作

    正則表達(dá)式是處理字符串時(shí)一個(gè)非常強(qiáng)大的工具,而?Go?語言的?regexp?包提供了簡(jiǎn)單而強(qiáng)大的接口來使用正則表達(dá)式,本文將介紹如何在?Go?中使用?regexp?包來編譯和執(zhí)行正則表達(dá)式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧
    2023-12-12
  • Go中阻塞以及非阻塞操作實(shí)現(xiàn)(Goroutine和main Goroutine)

    Go中阻塞以及非阻塞操作實(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-05
  • 在Go中創(chuàng)建隨機(jī)的安全密碼

    在Go中創(chuàng)建隨機(jī)的安全密碼

    今天小編就為大家分享一篇關(guān)于在Go中創(chuàng)建隨機(jī)的安全密碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • go使用errors.Wrapf()代替log.Error()方法示例

    go使用errors.Wrapf()代替log.Error()方法示例

    這篇文章主要為大家介紹了go使用errors.Wrapf()代替log.Error()的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Go并發(fā)控制WaitGroup的使用場(chǎng)景分析

    Go并發(fā)控制WaitGroup的使用場(chǎng)景分析

    WaitGroup,可理解為Wait-Goroutine-Group,即等待一組goroutine結(jié)束,本文通過具體場(chǎng)景結(jié)合實(shí)際例子給大家介紹使用WaitGroup控制的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Golang連接池的幾種實(shí)現(xiàn)案例小結(jié)

    Golang連接池的幾種實(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)目錄布局

    本文主要介紹了Go項(xiàng)目標(biāo)準(zhǔn)目錄布局,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論