第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在單個入口點(diǎn)中自定義來自兩個處理程序的響應(yīng)數(shù)據(jù)?

如何在單個入口點(diǎn)中自定義來自兩個處理程序的響應(yīng)數(shù)據(jù)?

Go
蠱毒傳說 2023-02-06 19:34:45
我在我的應(yīng)用程序中使用 echo 框架,我遇到了在單個入口點(diǎn)上構(gòu)造來自兩個處理程序的響應(yīng)的問題。有示例代碼type RespObject struct {    Message string `json:"message"`}func main() {    e := echo.New()    e.GET("/hello", handler, middle)    e.Logger.Fatal(e.Start(":3000"))}func handler(c echo.Context) error {    return c.JSON(http.StatusOK, RespObject{        Message: "Hello",    })}func middle(next echo.HandlerFunc) echo.HandlerFunc {    return func(c echo.Context) error {        c.JSON(http.StatusOK, RespObject{            Message: "World",        })        return next(c)    }}請求后我得到curl localhost:3000/hello{"message":"World"}{"message":"Hello"}我的目標(biāo)是做出回應(yīng){"message":"Hello World"}echo.Context 具有帶有實現(xiàn) ResponseWriter 的結(jié)構(gòu) Response但似乎 ResponseWriter 是 WriteOnly 合同。有沒有辦法在 ResponseWriter 中擦除和重建數(shù)據(jù)?據(jù)我所知有兩個問題通過“中間”處理程序后從 ResponseWriter 讀取數(shù)據(jù)。擦除 ResponseWriter 中的數(shù)據(jù)并在“處理程序”處理程序中寫入新數(shù)據(jù)在實際問題中,結(jié)構(gòu)的名稱沖突是沒有必要的。它在兩個不同的 SCIM API 中請求并做出組合響應(yīng)。
查看完整描述

1 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊

這可以通過創(chuàng)建一個自定義函數(shù)來實現(xiàn),該函數(shù)將響應(yīng)對象和代碼添加到上下文并在處理程序中調(diào)用它;在中間件中,您從上下文中獲取此對象,修改響應(yīng)并調(diào)用實際的 c.JSON,它將修改后的響應(yīng)寫入線路。


const (

    echoCtxRespKey = "echo_ctx_resp_key"

)


type RespObject struct {

    Message string `json:"message"`

}


type Response struct {

    Data interface{}

    Code int

}


func main() {

    e := echo.New()

    e.GET("/hello", handler, middle)


    e.Logger.Fatal(e.Start(":3000"))

}


func handler(c echo.Context) error {

    resp := RespObject{

        Message: "Hello",

    }

    addResponseToContext(c, Response{

        Data: resp,

        Code: http.StatusOK,

    })

    

    return nil 

}


func middle(next echo.HandlerFunc) echo.HandlerFunc {

    return func(c echo.Context) error {

        next(c)

        

        resp := getResponseFromContext(c)

        

        // modify resp

        

        return c.JSON(resp.Code, resp.Data)

    }

}


func addResponseToContext(c echo.Context, response Response) {

    c.Set(echoCtxRespKey, response)

}


func getResponseFromContext(c echo.Context) Response {

    return c.Get(echoCtxRespKey).(Response)

}


查看完整回答
反對 回復(fù) 2023-02-06
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號