W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
?Response
?輸出采用了緩沖控制,輸出的內(nèi)容預(yù)先寫入到一塊緩沖區(qū),等待服務(wù)方法執(zhí)行完畢后才真正地輸出到客戶端。該特性在提高執(zhí)行效率同時(shí)為輸出內(nèi)容的控制提供了更高的靈活性。
相關(guān)方法:
func (r *Response) Buffer() []byte
func (r *Response) BufferLength() int
func (r *Response) BufferString() string
func (r *Response) Flush()
func (r *Response) SetBuffer(data []byte)
其中?Output
?作用類似于?Flush
?將緩沖區(qū)的數(shù)據(jù)輸出到客戶端并清空緩沖區(qū)。
舉個(gè)例子:
我們通過后置中間件統(tǒng)一對(duì)返回的數(shù)據(jù)做處理,如果服務(wù)方法產(chǎn)生了異常,那么不能將敏感錯(cuò)誤信息推送到客戶端,而統(tǒng)一設(shè)置錯(cuò)誤提示信息。
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"net/http"
)
func MiddlewareErrorHandler(r *ghttp.Request) {
r.Middleware.Next()
if r.Response.Status >= http.StatusInternalServerError {
r.Response.ClearBuffer()
r.Response.Writeln("服務(wù)器居然開小差了,請(qǐng)稍后再試吧!")
}
}
func main() {
s := g.Server()
s.Group("/api.v2", func(group *ghttp.RouterGroup) {
group.Middleware(MiddlewareErrorHandler)
group.ALL("/user/list", func(r *ghttp.Request) {
panic("db error: sql is xxxxxxx")
})
})
s.SetPort(8199)
s.Run()
}
訪問 http://127.0.0.1:8199/api.v2/user/list 可以看到,頁面輸出了:
服務(wù)器居然開小差了,請(qǐng)稍后再試吧!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: