Browse Source

feature:传递请求方法名,指定返回数据字符集

ZZH-wl 3 years ago
parent
commit
c3c3a9528f
1 changed files with 16 additions and 8 deletions
  1. 16 8
      micro_gateway/gin/server.go

+ 16 - 8
micro_gateway/gin/server.go

@@ -53,10 +53,10 @@ func (s *Server) RegisterHandler(base string, handler ServiceHandler) {
 		// 自定义日志输出
 		g.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
 			return fmt.Sprintf("%s [%s] %s%s %s\n",
-				param.ClientIP,  // 客户端IP
+				param.ClientIP,                     // 客户端IP
 				param.Request.Header.Get("Tenant"), // 租户码
-				param.Path,  // 请求路径
-				"/" + param.Request.Header.Get("X-RPCX-ServicePath")+"/"+param.Request.Header.Get("X-RPCX-ServiceMethod"),
+				param.Path,                         // 请求路径
+				"/"+param.Request.Header.Get("X-RPCX-ServicePath")+"/"+param.Request.Header.Get("X-RPCX-ServiceMethod"),
 				//param.StatusCode,  // 请求状态码
 				//param.Latency,  // 请求时长
 				param.ErrorMessage,
@@ -106,7 +106,15 @@ func wrapServiceHandler(handler ServiceHandler) gin.HandlerFunc {
 		tenant := r.Header.Get("Tenant")
 		if tenant != "" {
 			//r.Header.Set(XMeta, "tenant="+tenant)
-			xmeta = "tenant="+tenant
+			xmeta = "tenant=" + tenant
+		}
+
+		serviceMethod := r.Header.Get(XServiceMethod)
+		if serviceMethod != "" {
+			if xmeta != "" {
+				xmeta = xmeta + "&"
+			}
+			xmeta = xmeta + "reqMethod=" + servicePath + "." + serviceMethod
 		}
 
 		// 传递ClientIP和UserAgent
@@ -114,8 +122,8 @@ func wrapServiceHandler(handler ServiceHandler) gin.HandlerFunc {
 		if x_Meta != "" && strings.Contains(x_Meta, "need_clint_Info=1") {
 			clientIP := ctx.ClientIP()
 			userAgent := gbase64.EncodeString(r.UserAgent())
-			if xmeta!=""{
-				xmeta= xmeta + "&"
+			if xmeta != "" {
+				xmeta = xmeta + "&"
 			}
 			xmeta = xmeta + "clientIP=" + clientIP + "&userAgent=" + userAgent
 		}
@@ -164,10 +172,10 @@ func wrapServiceHandler(handler ServiceHandler) gin.HandlerFunc {
 			// 普通开发环境改为json格式
 			env := r.Header.Get("SrvEnv")
 			if env == "dev" {
-				ctx.Data(http.StatusOK, "application/json", payload)
+				ctx.Data(http.StatusOK, "application/json; charset=UTF-8", payload)
 			} else {
 				// 常规数据流
-				ctx.Data(http.StatusOK, "application/octet-stream", payload)
+				ctx.Data(http.StatusOK, "application/octet-stream; charset=UTF-8", payload)
 			}
 			return
 		}