我需要擴展http包來實現包含狀態錯誤描述的非標準響應,例如: 400缺少必需參數 而不是400作爲標準狀態描述的錯誤請求。擴展golang的http包
這是我的實際執行情況:
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
)
type GatewayHandler int
func main() {
var gh GatewayHandler
http.ListenAndServe(":9000", gh)
}
func (gh GatewayHandler) ServeHTTP(res http.ResponseWriter, req *http.Request) {
legacyApiUrl := "http://some-url.com" + req.URL.RequestURI()
client := &http.Client{}
request, _ := http.NewRequest(req.Method, legacyApiUrl, nil)
response, _ := client.Do(request)
res.Header().Set("Status", response.Status)
for k, v := range response.Header {
fmt.Println(k, ": ", v)
i := ""
for _, j := range v {
i += j
}
res.Header().Set(k, i)
}
res.WriteHeader(response.StatusCode)
if response.Status != "200 OK" {
fmt.Println(response.Status)
}
result, _ := ioutil.ReadAll(response.Body)
output := string(result)
fmt.Println(output)
io.WriteString(res, output)
}
總的來說,我需要轉發來自其他網址使用它的那個狀態,我需要保持兼容。
非常感謝您提前。
約瑟夫
你確切的問題是什麼?在您當前的實施中,哪些不適合您?你想爲一些遺留API編寫代理嗎? – Nebril
是的,有點......問題是標題需要像<一些狀態消息>狀態消息應該包含一個錯誤描述,但不是像400錯誤請求那樣的標準錯誤描述,但是400缺少必需的參數,或者400請求中沒有時間戳或其他... –