This commit is contained in:
parent
c18b6059f3
commit
c5fd71b542
@ -6,8 +6,9 @@ import (
|
|||||||
"github.com/nacos-group/nacos-sdk-go/clients/config_client"
|
"github.com/nacos-group/nacos-sdk-go/clients/config_client"
|
||||||
"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
|
"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
|
||||||
"github.com/nacos-group/nacos-sdk-go/vo"
|
"github.com/nacos-group/nacos-sdk-go/vo"
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httputil"
|
||||||
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,33 +60,17 @@ func (n nacosClient) Remote(ctx *gin.Context) {
|
|||||||
apiHost = fmt.Sprintf("%s:%v", instance.Ip, instance.Port)
|
apiHost = fmt.Sprintf("%s:%v", instance.Ip, instance.Port)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 组装内部接口
|
u := &url.URL{
|
||||||
apiUrl := fmt.Sprintf("http://%v%v", apiHost, uri)
|
Scheme: "http",
|
||||||
// 创建Request对象
|
Host: apiHost,
|
||||||
req, err := http.NewRequest(ctx.Request.Method, apiUrl, ctx.Request.Body)
|
|
||||||
if err != nil {
|
|
||||||
Log.Error("请求异常: %v\n", err)
|
|
||||||
ctx.String(http.StatusBadGateway, "请求异常: %v", err.Error())
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
// 填充Form参数(大概率用不上)
|
proxy := httputil.NewSingleHostReverseProxy(u)
|
||||||
req.Form = ctx.Request.Form
|
ctx.Request.Header.Add("From", "internal")
|
||||||
// 填充链路追踪标记
|
ctx.Request.Header.Add("uber-trace-id", ctx.GetString("UberTraceId"))
|
||||||
req.Header.Add("uber-trace-id", ctx.GetString("UberTraceId"))
|
// 重写错误回调
|
||||||
// 请求ID
|
proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
|
||||||
req.Header.Add("X-Request-Id", ctx.GetString("X-Request-Id"))
|
Log.Error("代理转发错误: %v", err.Error())
|
||||||
// 设置来源
|
ctx.String(http.StatusInternalServerError, "系统内部错误")
|
||||||
req.Header.Add("From", "internal")
|
|
||||||
// 发起请求
|
|
||||||
client := &http.Client{}
|
|
||||||
response, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
Log.Error("请求异常: %v\n", err)
|
|
||||||
ctx.String(http.StatusBadGateway, "请求异常:%v", err.Error())
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
// 返回结果到前端
|
proxy.ServeHTTP(ctx.Writer, ctx.Request)
|
||||||
sss, _ := ioutil.ReadAll(response.Body)
|
|
||||||
Log.Debug(string(sss))
|
|
||||||
ctx.String(response.StatusCode, string(sss))
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user