PhalGo-Respones

2018-01-04 09:28 更新

PhalGo-Respones

在處理請(qǐng)求 Api 請(qǐng)求中 , 除了對(duì) Request 之外最重要的就是 Response 了 , PhalGo 支持兩種格式的參數(shù)返回一種是 Josn 一種是 XML , 在 PhalGo 中默認(rèn)使用JSON進(jìn)行返回 , 可以在入口文件進(jìn)行全局返回參數(shù)配置或在摸個(gè)接口內(nèi)部指定此接口返回的參數(shù)類型

Response初始化

Response 和 Request 一樣需要在 Api 中進(jìn)行初始化:

Response := phalgo.NewResponse(c)

返回格式

Response 默認(rèn)返回格式如下:

type RetParameter struct {
    Code int         `json:"code";xml:"code"`
    Data interface{} `json:"data";xml:"data"`
    Msg  string      `json:"msg";xml:"msg"`
}

code 為請(qǐng)求的狀態(tài)碼 , data 是具體返回的數(shù)據(jù) , msg 是返回內(nèi)容的描述例如"成功" , "失敗"

基礎(chǔ)使用

RetSuccess

我們最常用的就是成功返回 , RetSuccess接受一個(gè)接口類型的參數(shù) , 此參數(shù)會(huì)填充到 data 中 , 例子如下:

return Response.RetSuccess("hello " + name + " Welcome to PhalGo world")

如果需要返回自定的 msg 內(nèi)容需要使用 SetMsg 方法 例子如下:

Response.SetMsg("成功")

注意 : 使用 RetSuccess 函數(shù)時(shí) code 默認(rèn)為 1 , msg 默認(rèn)為""

RetError

當(dāng)我們處理程序異常的時(shí)候 , 我們會(huì)建立一個(gè)異常返回 , RetError 需要接受兩個(gè)參數(shù)一個(gè)是 error 會(huì)把報(bào)錯(cuò)信息填充到 msg 中 , 另外一個(gè)是 返回的code 例子如下:

return Response.RetError(errors.New("No Name"), -1)

當(dāng)然你如果要返回一些 Data 內(nèi)容 , 也只需要使用 SetData :

Response.SetData(map[string]string{"name" : "喵咪"})

RetCustomize

PhalGo 當(dāng)然也提供了靈活結(jié)果返回方法 RetCustomize 接受三個(gè)參數(shù) , 分別是 code data msg 開發(fā)者可以按照自己的需求返回自己想要的內(nèi)容 , 例子如下:

return Response.RetCustomize(201, map[string]string{"name":"喵咪"}, "成功")

Ret

當(dāng)然大家也有自己要求的返回格式 PhalGo 并不約束你需要使用 code,data,msg 這類格式 , PhalGo 提供了 Ret 方法接受一個(gè)結(jié)構(gòu)類型進(jìn)行返回 , 開發(fā)者可以按照約定的格式自行返回想要的內(nèi)容 , 例子如下:

return Response.Ret(map[string]string{"name":"喵咪"})

Write

最簡(jiǎn)單粗暴的就是直接打印內(nèi)容給到用戶 , Write 接受一個(gè) []byte 類型 , Write 默認(rèn)是無(wú)格式的 , 例子如下:

Response.Write([]byte("Debug:test Write"))

SetStatus

http 請(qǐng)求的一個(gè)重要內(nèi)容就是 Status 碼 , PhalGo 可以通過 SetStatus 方法來設(shè)置 , 例子如下:

Response.SetStatus(404)

此時(shí)返回的 Status 碼會(huì)是404

XML

PhalGo 在支持 Json 的情況下同時(shí)也支持 XML 返回格式 , 只需要通過 SetRetType 方法進(jìn)行設(shè)置 , 例子如下:

phalgo.SetRetType(phalgo.RETMXL)

這里有一個(gè)注意的情況了 , 此設(shè)置在 API 中設(shè)置影響范圍只是此 API , 如需影響全局需要在 Main 中進(jìn)行設(shè)置

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)