Я хочу создать прокси-шлюз в Go. Почти готово ! Одна вещь все еще отсутствует: отправьте полный ответ клиента на запрос сервера.
У меня есть собственный обработчик HTTP:
func (f HttpHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if rurl, err := getOriginurl(r.RequestURI); err == nil {
[...]
client := &Http.Client{}
r.URL = rurl
r.RequestURI = ""
resp, err := client.Do(r)
if err == nil {
for k, vs := range resp.Header {
for _, v := range vs {
w.Header().Set(k, v)
}
}
w.WriteHeader(resp.StatusCode)
if responseData,err := ioutil.ReadAll(resp.Body); err == nil {
w.Write(responseData)
}
}
}
}
func getOriginurl(request string) *url.URL {
{...}
// Would return an *url.URL with : http://127.0.0.1:8080/{requestURI}
}
Я ищу способ оптимизировать способ проанализировать ответ клиента на ResponseWriter. На самом деле мой вопрос будет: Как полностью проанализировать тип ответа для ResponseWriter?