【问题标题】:Go gin response middlewareGo gin 响应中间件
【发布时间】:2018-03-26 10:07:40
【问题描述】:

我需要在中间件函数中操作响应数据。假设我有产品处理程序和客户处理程序。产品处理程序返回产品列表,客户返回客户列表。在中间件函数中,我想将这些响应转换为 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{}

}

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

【问题讨论】:

    标签: go go-gin


    【解决方案1】:

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

    最简单的方法通常是使用gin.ContextGetSet 方法在中间件和处理程序之间传递数据。

    但如果你真的需要拦截响应,请参阅我关于 logging response in gin 的回答。唯一的区别是你对拦截的响应做了什么,但那里所说的关于拦截它的一切都是真实的。

    【讨论】:

      猜你喜欢
      • 2020-09-02
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多