go-swagger WriteResponse - PullRequest
       20

go-swagger WriteResponse

0 голосов
/ 20 сентября 2018

Я использую 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)

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Большое спасибо вам обоим, вы мне очень помогли.Он работал точно так же, как вы сказали, но в 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)
    })
0 голосов
/ 20 сентября 2018

Как уже упоминал Flimzy, вам придется записать свою строку в http.ResponseWriter, что, вероятно, в любом случае делает ваша функция WriteResponse.

Код, который вы предоставили, должен откуда-то вызываться изнутрифункция обработчика:

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