我需要在中间件函数中操作响应数据。假设我有产品处理程序和客户处理程序。产品处理程序返回产品列表,客户返回客户列表。在中间件函数中,我想将这些响应转换为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。
可能有点晚了,但不管怎样。
最简单的方法通常是使用get
和Set
方法在中间件和处理程序之间传递数据。
但是如果你真的需要拦截响应,请参阅我关于在gin中记录响应的回答。唯一的区别是你对拦截的响应做了什么,但是那里所说的关于拦截它的一切都是真实的。