diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index a2ff54b36e1411d8433bd4bdd6dfb1174af3165c..7e7b7d2f9c363876c2fedb4957a62df7e6c58983 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -70,16 +70,35 @@ func Proxy(c *gin.Context) { Return(res) return nil })) - query := "" - if proxyData.Data_service_type1 == 2 { - query = "?f=json" - } - c.Request.URL = testutils.ParseURI(proxyData.RealUrl + query) - c.Request.RequestURI = proxyData.RealUrl + query - c.Request.Host = getHost(proxyData.RealUrl + query) + c.Request.URL = testutils.ParseURI(getProxyURL(proxyData.RealUrl, c.Request)) + c.Request.RequestURI = getRequestURI(c.Request) + c.Request.Host = getHost(proxyData.RealUrl) f.ServeHTTP(c.Writer, c.Request) } +func getProxyURL(realPath string, req *http.Request) string { + rawQuery := req.URL.RawQuery + var result = "" + if rawQuery == "" { + result = realPath + "?f=json" + } else { + result = realPath + "?" + rawQuery + } + return result +} + +func getRequestURI(req *http.Request) string { + path := req.URL.Path + rawQuery := req.URL.RawQuery + var result = "" + if rawQuery == "" { + result = path + } else { + result = path + "?" + rawQuery + } + return result +} + func Return(res interface{}) { var b []byte diff --git a/src/model/response.go b/src/model/response.go index 80619329426c775df755c08dad7bccbae231e6ec..b1c6160f6596b2369264c2070fcc5b8e84ae65ab 100644 --- a/src/model/response.go +++ b/src/model/response.go @@ -10,6 +10,7 @@ type ProxyData struct { Service_id int `json:"service_id" xorm:"service_id"` User_id string `json:"user_id" xorm:"user_id"` Data_service_type1 int `json:"data_service_type1" xorm:"data_service_type1"` + Name string `json:"name"` } type WebRes struct { diff --git a/src/service/field.go b/src/service/field.go index f97117d5c3b43c2918e7fcde5755cac4e162fb0c..9753801ac8e49218ac2e4c571d26175e0a4a609c 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -386,11 +386,12 @@ func GetRealPath(applyId string) (res model.ProxyData, err error) { } has, err := db. Select(`service_apply.res_fields as res_fields,service.req_url as req_url,service_request_spcs.count as count,service_safe_config.sensituve_word as sensituve_word -,service_request_spcs.sensitive_count as sensitive_count,service_apply.service_id as service_id,service_apply.id as apply_id,service_apply.user_id as user_id,service.data_service_type1`). +,service_request_spcs.sensitive_count as sensitive_count,service_apply.service_id as service_id,service_apply.id as apply_id,service_apply.user_id as user_id,service.data_service_type1,domains.name`). Table(`service`). Join(`inner`, `service_apply`, `service_apply.service_id = service.id`). Join(`left`, `service_request_spcs`, `service_request_spcs.id = service_apply.request_spcs_id`). Join(`left`, `service_safe_config`, `service_apply.service_id = service_safe_config.service_id`). + Join("inner", "domains", "domains.id = service.data_service_type1"). Where(`service_apply.uuid=?`, applyId).Get(&res) if !has { err = errors.New(`未找到发布的服务!`)