You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ti...@apache.org on 2021/03/22 14:17:07 UTC

[servicecomb-service-center] branch master updated: SCB-2176 Fix: Add response obj context value (#914)

This is an automated email from the ASF dual-hosted git repository.

tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new eefdee6  SCB-2176 Fix: Add response obj context value (#914)
eefdee6 is described below

commit eefdee6d86ecb44ba285b4f01d33ace8af6acf82
Author: little-cui <su...@qq.com>
AuthorDate: Mon Mar 22 22:16:59 2021 +0800

    SCB-2176 Fix: Add response obj context value (#914)
---
 go.mod                                             |  2 +-
 pkg/rest/common.go                                 |  1 +
 server/broker/controller.go                        | 12 ++++++------
 server/rest/admin/controller_v4.go                 |  8 ++++----
 server/rest/controller/rest_util.go                |  5 ++++-
 server/rest/controller/v4/dependency_controller.go |  8 ++++----
 server/rest/controller/v4/instance_controller.go   | 22 +++++++++++-----------
 server/rest/controller/v4/main_controller.go       |  2 +-
 .../rest/controller/v4/microservice_controller.go  | 14 +++++++-------
 server/rest/controller/v4/query_rule_controller.go |  8 ++++----
 server/rest/controller/v4/schema_controller.go     | 10 +++++-----
 server/rest/controller/v4/tag_controller.go        |  8 ++++----
 server/rest/govern/controller_v4.go                | 10 +++++-----
 13 files changed, 57 insertions(+), 53 deletions(-)

diff --git a/go.mod b/go.mod
index 18dad51..04bb139 100644
--- a/go.mod
+++ b/go.mod
@@ -23,7 +23,7 @@ require (
 	github.com/go-chassis/go-archaius v1.5.1
 	github.com/go-chassis/go-chassis/v2 v2.1.2-0.20210310004133-c9bc42149a18
 	github.com/go-chassis/kie-client v0.1.0
-	github.com/golang/protobuf v1.4.2 // indirect
+	github.com/golang/protobuf v1.4.2
 	github.com/google/go-cmp v0.5.4 // indirect
 	github.com/gorilla/websocket v1.4.2
 	github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 // indirect
diff --git a/pkg/rest/common.go b/pkg/rest/common.go
index 3457365..ffe5e8d 100644
--- a/pkg/rest/common.go
+++ b/pkg/rest/common.go
@@ -34,6 +34,7 @@ const (
 	CtxMatchPattern   util.CtxKey = "_server_match_pattern"
 	CtxMatchFunc      util.CtxKey = "_server_match_func"
 	CtxStartTimestamp util.CtxKey = "x-start-timestamp"
+	CtxResponseObject util.CtxKey = "_server_response_object"
 
 	ServerChainName = "_server_chain"
 
diff --git a/server/broker/controller.go b/server/broker/controller.go
index 5be1346..15378fa 100644
--- a/server/broker/controller.go
+++ b/server/broker/controller.go
@@ -72,7 +72,7 @@ func (brokerService *Controller) GetHome(w http.ResponseWriter, r *http.Request)
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (*Controller) PublishPact(w http.ResponseWriter, r *http.Request) {
@@ -99,7 +99,7 @@ func (*Controller) PublishPact(w http.ResponseWriter, r *http.Request) {
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (*Controller) GetAllProviderPacts(w http.ResponseWriter, r *http.Request) {
@@ -125,7 +125,7 @@ func (*Controller) GetAllProviderPacts(w http.ResponseWriter, r *http.Request) {
 	PactLogger.Infof("Pact info: %s\n", string(linksObj))
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (*Controller) GetPactsOfProvider(w http.ResponseWriter, r *http.Request) {
@@ -152,7 +152,7 @@ func (*Controller) DeletePacts(w http.ResponseWriter, r *http.Request) {
 		HostAddress: r.Host,
 		Scheme:      getScheme(r),
 	})
-	controller.WriteResponse(w, resp, nil)
+	controller.WriteResponse(w, r, resp, nil)
 }
 
 func (*Controller) PublishVerificationResults(w http.ResponseWriter, r *http.Request) {
@@ -191,7 +191,7 @@ func (*Controller) PublishVerificationResults(w http.ResponseWriter, r *http.Req
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (*Controller) RetrieveVerificationResults(w http.ResponseWriter, r *http.Request) {
@@ -204,7 +204,7 @@ func (*Controller) RetrieveVerificationResults(w http.ResponseWriter, r *http.Re
 	resp, _ := ServiceAPI.RetrieveVerificationResults(r.Context(), request)
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func getScheme(r *http.Request) string {
diff --git a/server/rest/admin/controller_v4.go b/server/rest/admin/controller_v4.go
index 28a1276..71b5189 100644
--- a/server/rest/admin/controller_v4.go
+++ b/server/rest/admin/controller_v4.go
@@ -56,7 +56,7 @@ func (ctrl *ControllerV4) Dump(w http.ResponseWriter, r *http.Request) {
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (ctrl *ControllerV4) Clusters(w http.ResponseWriter, r *http.Request) {
@@ -66,7 +66,7 @@ func (ctrl *ControllerV4) Clusters(w http.ResponseWriter, r *http.Request) {
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (ctrl *ControllerV4) AlarmList(w http.ResponseWriter, r *http.Request) {
@@ -76,12 +76,12 @@ func (ctrl *ControllerV4) AlarmList(w http.ResponseWriter, r *http.Request) {
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (ctrl *ControllerV4) ClearAlarm(w http.ResponseWriter, r *http.Request) {
 	request := &dump.ClearAlarmRequest{}
 	ctx := r.Context()
 	resp, _ := AdminServiceAPI.ClearAlarm(ctx, request)
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
diff --git a/server/rest/controller/rest_util.go b/server/rest/controller/rest_util.go
index b325287..c1698c7 100644
--- a/server/rest/controller/rest_util.go
+++ b/server/rest/controller/rest_util.go
@@ -45,7 +45,7 @@ func WriteError(w http.ResponseWriter, code int32, detail string) {
 	}
 }
 
-func WriteResponse(w http.ResponseWriter, resp *discovery.Response, obj interface{}) {
+func WriteResponse(w http.ResponseWriter, r *http.Request, resp *discovery.Response, obj interface{}) {
 	if resp != nil && resp.GetCode() != discovery.ResponseSuccess {
 		WriteError(w, resp.GetCode(), resp.GetMessage())
 		return
@@ -58,6 +58,9 @@ func WriteResponse(w http.ResponseWriter, resp *discovery.Response, obj interfac
 		return
 	}
 
+	// async handler maybe need this obj
+	util.SetRequestContext(r, rest.CtxResponseObject, obj)
+
 	b, err := json.Marshal(obj)
 	if err != nil {
 		WriteError(w, discovery.ErrInternal, err.Error())
diff --git a/server/rest/controller/v4/dependency_controller.go b/server/rest/controller/v4/dependency_controller.go
index 08b3ae1..7d5ae3d 100644
--- a/server/rest/controller/v4/dependency_controller.go
+++ b/server/rest/controller/v4/dependency_controller.go
@@ -63,7 +63,7 @@ func (s *DependencyService) AddDependenciesForMicroServices(w http.ResponseWrite
 		controller.WriteError(w, pb.ErrInternal, err.Error())
 	}
 	w.Header().Add("Deprecation", "version=\"v4\"")
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *DependencyService) CreateDependenciesForMicroServices(w http.ResponseWriter, r *http.Request) {
@@ -86,7 +86,7 @@ func (s *DependencyService) CreateDependenciesForMicroServices(w http.ResponseWr
 		controller.WriteError(w, pb.ErrInternal, err.Error())
 	}
 	w.Header().Add("Deprecation", "version=\"v4\"")
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *DependencyService) GetConProDependencies(w http.ResponseWriter, r *http.Request) {
@@ -99,7 +99,7 @@ func (s *DependencyService) GetConProDependencies(w http.ResponseWriter, r *http
 	resp, _ := core.ServiceAPI.GetConsumerDependencies(r.Context(), request)
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *DependencyService) GetProConDependencies(w http.ResponseWriter, r *http.Request) {
@@ -112,5 +112,5 @@ func (s *DependencyService) GetProConDependencies(w http.ResponseWriter, r *http
 	resp, _ := core.ServiceAPI.GetProviderDependencies(r.Context(), request)
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
diff --git a/server/rest/controller/v4/instance_controller.go b/server/rest/controller/v4/instance_controller.go
index bb88f58..b711a71 100644
--- a/server/rest/controller/v4/instance_controller.go
+++ b/server/rest/controller/v4/instance_controller.go
@@ -77,7 +77,7 @@ func (s *MicroServiceInstanceService) RegisterInstance(w http.ResponseWriter, r
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 //TODO 什么样的服务允许更新服务心跳,只能是本服务才可以更新自己,如何屏蔽其他服务伪造的心跳更新?
@@ -88,7 +88,7 @@ func (s *MicroServiceInstanceService) Heartbeat(w http.ResponseWriter, r *http.R
 		InstanceId: query.Get(":instanceId"),
 	}
 	resp, _ := core.InstanceAPI.Heartbeat(r.Context(), request)
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *MicroServiceInstanceService) HeartbeatSet(w http.ResponseWriter, r *http.Request) {
@@ -109,12 +109,12 @@ func (s *MicroServiceInstanceService) HeartbeatSet(w http.ResponseWriter, r *htt
 	resp, _ := core.InstanceAPI.HeartbeatSet(r.Context(), request)
 
 	if resp.Response.GetCode() == pb.ResponseSuccess {
-		controller.WriteResponse(w, nil, nil)
+		controller.WriteResponse(w, r, nil, nil)
 		return
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceInstanceService) UnregisterInstance(w http.ResponseWriter, r *http.Request) {
@@ -124,7 +124,7 @@ func (s *MicroServiceInstanceService) UnregisterInstance(w http.ResponseWriter,
 		InstanceId: query.Get(":instanceId"),
 	}
 	resp, _ := core.InstanceAPI.Unregister(r.Context(), request)
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *MicroServiceInstanceService) FindInstances(w http.ResponseWriter, r *http.Request) {
@@ -157,7 +157,7 @@ func (s *MicroServiceInstanceService) FindInstances(w http.ResponseWriter, r *ht
 		return
 	}
 
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceInstanceService) InstancesAction(w http.ResponseWriter, r *http.Request) {
@@ -183,7 +183,7 @@ func (s *MicroServiceInstanceService) InstancesAction(w http.ResponseWriter, r *
 		resp, _ := core.InstanceAPI.BatchFind(ctx, request)
 		respInternal := resp.Response
 		resp.Response = nil
-		controller.WriteResponse(w, respInternal, resp)
+		controller.WriteResponse(w, r, respInternal, resp)
 	default:
 		err = fmt.Errorf("Invalid action: %s", action)
 		log.Errorf(err, "invalid request")
@@ -216,7 +216,7 @@ func (s *MicroServiceInstanceService) GetOneInstance(w http.ResponseWriter, r *h
 		w.WriteHeader(http.StatusNotModified)
 		return
 	}
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceInstanceService) GetInstances(w http.ResponseWriter, r *http.Request) {
@@ -242,7 +242,7 @@ func (s *MicroServiceInstanceService) GetInstances(w http.ResponseWriter, r *htt
 		w.WriteHeader(http.StatusNotModified)
 		return
 	}
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceInstanceService) UpdateStatus(w http.ResponseWriter, r *http.Request) {
@@ -254,7 +254,7 @@ func (s *MicroServiceInstanceService) UpdateStatus(w http.ResponseWriter, r *htt
 		Status:     status,
 	}
 	resp, _ := core.InstanceAPI.UpdateStatus(r.Context(), request)
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *MicroServiceInstanceService) UpdateMetadata(w http.ResponseWriter, r *http.Request) {
@@ -280,5 +280,5 @@ func (s *MicroServiceInstanceService) UpdateMetadata(w http.ResponseWriter, r *h
 		log.Errorf(err, "can not update instance")
 		controller.WriteError(w, pb.ErrInternal, "can not update instance")
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
diff --git a/server/rest/controller/v4/main_controller.go b/server/rest/controller/v4/main_controller.go
index 2719245..01e6d9b 100644
--- a/server/rest/controller/v4/main_controller.go
+++ b/server/rest/controller/v4/main_controller.go
@@ -57,7 +57,7 @@ func (s *MainService) ClusterHealth(w http.ResponseWriter, r *http.Request) {
 	resp, _ := core.InstanceAPI.ClusterHealth(r.Context())
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MainService) GetVersion(w http.ResponseWriter, r *http.Request) {
diff --git a/server/rest/controller/v4/microservice_controller.go b/server/rest/controller/v4/microservice_controller.go
index 64040eb..43254c9 100644
--- a/server/rest/controller/v4/microservice_controller.go
+++ b/server/rest/controller/v4/microservice_controller.go
@@ -70,7 +70,7 @@ func (s *MicroServiceService) Register(w http.ResponseWriter, r *http.Request) {
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceService) Update(w http.ResponseWriter, r *http.Request) {
@@ -95,7 +95,7 @@ func (s *MicroServiceService) Update(w http.ResponseWriter, r *http.Request) {
 		controller.WriteError(w, pb.ErrInternal, "can not update service")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *MicroServiceService) Unregister(w http.ResponseWriter, r *http.Request) {
@@ -119,7 +119,7 @@ func (s *MicroServiceService) Unregister(w http.ResponseWriter, r *http.Request)
 		controller.WriteError(w, pb.ErrInternal, "delete service failed")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *MicroServiceService) GetServices(w http.ResponseWriter, r *http.Request) {
@@ -132,7 +132,7 @@ func (s *MicroServiceService) GetServices(w http.ResponseWriter, r *http.Request
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceService) GetExistence(w http.ResponseWriter, r *http.Request) {
@@ -156,7 +156,7 @@ func (s *MicroServiceService) GetExistence(w http.ResponseWriter, r *http.Reques
 	respInternal := resp.Response
 	resp.Response = nil
 	resp.Summary = ""
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceService) GetServiceOne(w http.ResponseWriter, r *http.Request) {
@@ -171,7 +171,7 @@ func (s *MicroServiceService) GetServiceOne(w http.ResponseWriter, r *http.Reque
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *MicroServiceService) UnregisterServices(w http.ResponseWriter, r *http.Request) {
@@ -199,5 +199,5 @@ func (s *MicroServiceService) UnregisterServices(w http.ResponseWriter, r *http.
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
diff --git a/server/rest/controller/v4/query_rule_controller.go b/server/rest/controller/v4/query_rule_controller.go
index 03dc171..cfce2d0 100644
--- a/server/rest/controller/v4/query_rule_controller.go
+++ b/server/rest/controller/v4/query_rule_controller.go
@@ -69,7 +69,7 @@ func (s *RuleService) AddRule(w http.ResponseWriter, r *http.Request) {
 	}
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *RuleService) DeleteRule(w http.ResponseWriter, r *http.Request) {
@@ -81,7 +81,7 @@ func (s *RuleService) DeleteRule(w http.ResponseWriter, r *http.Request) {
 		ServiceId: query.Get(":serviceId"),
 		RuleIds:   ids,
 	})
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *RuleService) UpdateRule(w http.ResponseWriter, r *http.Request) {
@@ -110,7 +110,7 @@ func (s *RuleService) UpdateRule(w http.ResponseWriter, r *http.Request) {
 		controller.WriteError(w, pb.ErrInternal, "update rule failed")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *RuleService) GetRules(w http.ResponseWriter, r *http.Request) {
@@ -119,5 +119,5 @@ func (s *RuleService) GetRules(w http.ResponseWriter, r *http.Request) {
 	})
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
diff --git a/server/rest/controller/v4/schema_controller.go b/server/rest/controller/v4/schema_controller.go
index 494b552..cdb642f 100644
--- a/server/rest/controller/v4/schema_controller.go
+++ b/server/rest/controller/v4/schema_controller.go
@@ -69,7 +69,7 @@ func (s *SchemaService) GetSchemas(w http.ResponseWriter, r *http.Request) {
 	resp.SchemaSummary = ""
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *SchemaService) ModifySchema(w http.ResponseWriter, r *http.Request) {
@@ -96,7 +96,7 @@ func (s *SchemaService) ModifySchema(w http.ResponseWriter, r *http.Request) {
 		controller.WriteError(w, pb.ErrInternal, "can not update schema")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *SchemaService) ModifySchemas(w http.ResponseWriter, r *http.Request) {
@@ -121,7 +121,7 @@ func (s *SchemaService) ModifySchemas(w http.ResponseWriter, r *http.Request) {
 		controller.WriteError(w, pb.ErrInternal, "can not update schema")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *SchemaService) DeleteSchemas(w http.ResponseWriter, r *http.Request) {
@@ -131,7 +131,7 @@ func (s *SchemaService) DeleteSchemas(w http.ResponseWriter, r *http.Request) {
 		SchemaId:  query.Get(":schemaId"),
 	}
 	resp, _ := core.ServiceAPI.DeleteSchema(r.Context(), request)
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *SchemaService) GetAllSchemas(w http.ResponseWriter, r *http.Request) {
@@ -149,5 +149,5 @@ func (s *SchemaService) GetAllSchemas(w http.ResponseWriter, r *http.Request) {
 	resp, _ := core.ServiceAPI.GetAllSchemaInfo(r.Context(), request)
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
diff --git a/server/rest/controller/v4/tag_controller.go b/server/rest/controller/v4/tag_controller.go
index c85823e..6576491 100644
--- a/server/rest/controller/v4/tag_controller.go
+++ b/server/rest/controller/v4/tag_controller.go
@@ -68,7 +68,7 @@ func (s *TagService) AddTags(w http.ResponseWriter, r *http.Request) {
 		controller.WriteError(w, pb.ErrInternal, "can not add tag")
 		return
 	}
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *TagService) UpdateTag(w http.ResponseWriter, r *http.Request) {
@@ -78,7 +78,7 @@ func (s *TagService) UpdateTag(w http.ResponseWriter, r *http.Request) {
 		Key:       query.Get(":key"),
 		Value:     query.Get("value"),
 	})
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
 
 func (s *TagService) GetTags(w http.ResponseWriter, r *http.Request) {
@@ -87,7 +87,7 @@ func (s *TagService) GetTags(w http.ResponseWriter, r *http.Request) {
 	})
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (s *TagService) DeleteTags(w http.ResponseWriter, r *http.Request) {
@@ -99,5 +99,5 @@ func (s *TagService) DeleteTags(w http.ResponseWriter, r *http.Request) {
 		ServiceId: query.Get(":serviceId"),
 		Keys:      ids,
 	})
-	controller.WriteResponse(w, resp.Response, nil)
+	controller.WriteResponse(w, r, resp.Response, nil)
 }
diff --git a/server/rest/govern/controller_v4.go b/server/rest/govern/controller_v4.go
index 7bb2c92..659f015 100644
--- a/server/rest/govern/controller_v4.go
+++ b/server/rest/govern/controller_v4.go
@@ -86,7 +86,7 @@ func (governService *ResourceV4) GetGraph(w http.ResponseWriter, r *http.Request
 		if err != nil {
 			log.Errorf(err, "get service[%s/%s/%s/%s]'s providers failed",
 				service.Environment, service.AppId, service.ServiceName, service.Version)
-			controller.WriteResponse(w, proResp.Response, nil)
+			controller.WriteResponse(w, r, proResp.Response, nil)
 			return
 		}
 
@@ -95,7 +95,7 @@ func (governService *ResourceV4) GetGraph(w http.ResponseWriter, r *http.Request
 		graph.Lines = append(graph.Lines, lines...)
 	}
 	graph.Nodes = nodes
-	controller.WriteResponse(w, nil, graph)
+	controller.WriteResponse(w, r, nil, graph)
 }
 
 func (governService *ResourceV4) genLinesFromNode(withShared bool, domainProject string, node Node, providers []*pb.MicroService) []Line {
@@ -135,7 +135,7 @@ func (governService *ResourceV4) GetServiceDetail(w http.ResponseWriter, r *http
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (governService *ResourceV4) GetAllServicesInfo(w http.ResponseWriter, r *http.Request) {
@@ -159,7 +159,7 @@ func (governService *ResourceV4) GetAllServicesInfo(w http.ResponseWriter, r *ht
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }
 
 func (governService *ResourceV4) GetAllApplications(w http.ResponseWriter, r *http.Request) {
@@ -172,5 +172,5 @@ func (governService *ResourceV4) GetAllApplications(w http.ResponseWriter, r *ht
 
 	respInternal := resp.Response
 	resp.Response = nil
-	controller.WriteResponse(w, respInternal, resp)
+	controller.WriteResponse(w, r, respInternal, resp)
 }