【问题标题】:go-swagger WriteResponse大摇大摆的写响应
【发布时间】:2018-09-20 06:24:59
【问题描述】:

我正在使用 go-swagger,但我有一个案例我想将字符串写入响应。我需要调用“WriteResponse”函数

WriteResponse(rw http.ResponseWriter, producer runtime.Producer)

我遇到的问题是我不知道如何将字符串转换为 http.ResponseWriter 并创建 runtime.Producer。

如果有帮助,这里是我的代码片段...

//convert the database response to a string array of valid JSON
stringArray, conversionError := plan.ConvertPlanArrayToString(response)
if conversionError != nil {
    return swaggerPlan.NewPlanGetTemplatePlanInternalServerError()
}

//Need to convert string value
stringValue := stringArray[0]
return swaggerPlan.NewPlanGetTemplatePlanOK().WriteResponse(NOT SURE HOW TO CREATE http.ResponseWriter, runtime.Producer)

非常感谢

【问题讨论】:

  • 您不会将字符串转换为 ResponseWriter。但是您可以将字符串写入 到 ResponseWriter。至于你的 runtime.Producer 类型——那是什么?它不是标准库运行时包的一部分。

标签: http go go-swagger


【解决方案1】:

正如 Flimzy 所提到的,您必须将字符串写入 http.ResponseWriter,这可能就是您的 WriteResponse 函数所做的。

您提供的代码应该在某个处理函数中调用:

func (...) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
  // your code should be here and you can pass the http.ResponseWriter
}

【讨论】:

    【解决方案2】:

    非常感谢你们两位,你们非常有帮助。它的工作方式与您所说的完全一样,但在 go-swagger 中略有不同。

    我的处理程序已更新为返回一个自定义的“ResponderFunc”,然后我可以将我的输出直接写入它。效果很好,这是我的代码...

    //Handle a 200 by sending the list of plans back as json
        return middleware.ResponderFunc(func(rw http.ResponseWriter, pr runtime.Producer) {
            rw.WriteHeader(200)
            rw.Write(byteArrayPlan)
        })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2014-07-19
      • 2015-12-14
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多