去杜松子酒响应中间件

时间:2017-11-30 22:22:01

标签: go go-gin

我需要在中间件功能中操纵响应数据。假设我有产品处理程序和客户处理程序。产品处理程序返回产品列表,客户返回客户列表。在中间件函数中,我想将这些响应转换为ApiResponse结构。

type ApiResponse struct{
    Data interface{}
    Status ApiStatus{}
}

func someMiddleware(c *gin.Context){
   //before handlers
   c.Next()
   //I need to access response and manipulate it
   // apiResponse := ApiResponse{}
   // apiResponse.Data = returnedData
   // apiResponse.Status = ApiStatus{}

}

我不想在所有handlerFunctions中填写ApiResponse。

1 个答案:

答案 0 :(得分:1)

可能有点太晚了,但无论如何。

最简单的方法通常是使用Get的{​​{1}}和Set方法在中间件和处理程序之间传递数据。

但如果您确实需要拦截回复,请参阅我对logging response in gin的回答。唯一的区别在于你对截获的响应做了什么,但是所有关于拦截它的内容都说是真的。