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 809130f Fix: websocket does not work after refactor router (#1006) 809130f is described below commit 809130ff3dbbb28738c6fde7ca25815a5bf43f5c Author: little-cui <sure_0...@qq.com> AuthorDate: Wed May 26 10:14:22 2021 +0800 Fix: websocket does not work after refactor router (#1006) --- pkg/rest/common.go | 5 ---- server/broker/controller.go | 6 ++--- server/handler/exception/exception.go | 31 ++++++++++++++++++---- server/rest/admin/controller_v4.go | 6 ++--- server/rest/controller/v3/dependency_controller.go | 10 ++++--- server/rest/controller/v3/instance_controller.go | 20 +++++++------- server/rest/controller/v3/instance_watcher.go | 4 ++- server/rest/controller/v3/main_controller.go | 4 +-- .../rest/controller/v3/microservice_controller.go | 16 ++++++----- server/rest/controller/v3/query_rule_controller.go | 10 ++++--- server/rest/controller/v3/schema_controller.go | 12 +++++---- server/rest/controller/v3/tag_controller.go | 10 ++++--- server/rest/controller/v4/dependency_controller.go | 8 +++--- server/rest/controller/v4/instance_controller.go | 20 +++++++------- server/rest/controller/v4/instance_watcher.go | 15 +++++++++-- server/rest/controller/v4/main_controller.go | 4 +-- .../rest/controller/v4/microservice_controller.go | 14 +++++----- server/rest/controller/v4/query_rule_controller.go | 8 +++--- server/rest/controller/v4/schema_controller.go | 12 ++++----- server/rest/controller/v4/tag_controller.go | 8 +++--- server/rest/govern/controller_v3.go | 8 +++--- server/rest/govern/controller_v4.go | 10 +++---- syncer/pkg/mock/mockservicecenter/servicecenter.go | 16 +++++------ 23 files changed, 150 insertions(+), 107 deletions(-) diff --git a/pkg/rest/common.go b/pkg/rest/common.go index f99651f..eecb7eb 100644 --- a/pkg/rest/common.go +++ b/pkg/rest/common.go @@ -24,11 +24,6 @@ import ( ) const ( - HTTPMethodGet = http.MethodGet - HTTPMethodPut = http.MethodPut - HTTPMethodPost = http.MethodPost - HTTPMethodDelete = http.MethodDelete - CtxResponse util.CtxKey = "_server_response" CtxRequest util.CtxKey = "_server_request" CtxMatchPattern util.CtxKey = "_server_match_pattern" diff --git a/server/broker/controller.go b/server/broker/controller.go index 7f48226..c2ca4f4 100644 --- a/server/broker/controller.go +++ b/server/broker/controller.go @@ -42,7 +42,7 @@ func (brokerService *Controller) URLPatterns() []rest.Route { {Method: http.MethodGet, Path: "/", Func: brokerService.GetHome}, - {Method: rest.HTTPMethodPut, + {Method: http.MethodPut, Path: "/pacts/provider/:providerId/consumer/:consumerId/version/:number", Func: brokerService.PublishPact}, {Method: http.MethodGet, @@ -51,10 +51,10 @@ func (brokerService *Controller) URLPatterns() []rest.Route { {Method: http.MethodGet, Path: "/pacts/provider/:providerId/consumer/:consumerId/version/:number", Func: brokerService.GetPactsOfProvider}, - {Method: rest.HTTPMethodDelete, + {Method: http.MethodDelete, Path: "/pacts/delete", Func: brokerService.DeletePacts}, - {Method: rest.HTTPMethodPost, + {Method: http.MethodPost, Path: "/pacts/provider/:providerId/consumer/:consumerId/pact-version/:sha/verification-results", Func: brokerService.PublishVerificationResults}, {Method: http.MethodGet, diff --git a/server/handler/exception/exception.go b/server/handler/exception/exception.go index b711dd4..9d9ef76 100644 --- a/server/handler/exception/exception.go +++ b/server/handler/exception/exception.go @@ -18,26 +18,37 @@ package exception import ( + "fmt" + "net/http" + "github.com/apache/servicecomb-service-center/pkg/chain" "github.com/apache/servicecomb-service-center/pkg/errors" "github.com/apache/servicecomb-service-center/pkg/log" "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/pkg/util" "github.com/go-chassis/cari/discovery" - "net/http" ) +var whitelists = make(map[string]struct{}) + // Handler provide a common response writer to handle exceptions type Handler struct { } func (l *Handler) Handle(i *chain.Invocation) { - w, r := i.Context().Value(rest.CtxResponse).(http.ResponseWriter), - i.Context().Value(rest.CtxRequest).(*http.Request) + w, r, apiPath := i.Context().Value(rest.CtxResponse).(http.ResponseWriter), + i.Context().Value(rest.CtxRequest).(*http.Request), + i.Context().Value(rest.CtxMatchPattern).(string) - asyncWriter := NewWriter(w) - util.SetRequestContext(r, rest.CtxResponse, asyncWriter) + i.WithContext(rest.CtxResponseStatus, http.StatusOK) + if InWhitelist(r.Method, apiPath) { + i.Next() + return + } + + asyncWriter := NewWriter(w) + i.WithContext(rest.CtxResponse, asyncWriter) i.Next(chain.WithFunc(func(ret chain.Result) { if !ret.OK { i.WithContext(rest.CtxResponseStatus, l.responseError(w, ret.Err)) @@ -83,3 +94,13 @@ func (l *Handler) responseError(w http.ResponseWriter, e error) (statusCode int) func RegisterHandlers() { chain.RegisterHandler(rest.ServerChainName, &Handler{}) } + +func RegisterWhitelist(method, apiPath string) { + whitelists[method+" "+apiPath] = struct{}{} + log.Debug(fmt.Sprintf("skip handle api [%s]%s exceptions", method, apiPath)) +} + +func InWhitelist(method, apiPath string) bool { + _, ok := whitelists[method+" "+apiPath] + return ok +} diff --git a/server/rest/admin/controller_v4.go b/server/rest/admin/controller_v4.go index b2c5744..16026f8 100644 --- a/server/rest/admin/controller_v4.go +++ b/server/rest/admin/controller_v4.go @@ -36,9 +36,9 @@ type ControllerV4 struct { func (ctrl *ControllerV4) URLPatterns() []rest.Route { return []rest.Route{ {Method: http.MethodGet, Path: "/v4/:project/admin/alarms", Func: ctrl.AlarmList}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/admin/alarms", Func: ctrl.ClearAlarm}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/admin/dump", Func: ctrl.Dump}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/admin/clusters", Func: ctrl.Clusters}, + {Method: http.MethodDelete, Path: "/v4/:project/admin/alarms", Func: ctrl.ClearAlarm}, + {Method: http.MethodGet, Path: "/v4/:project/admin/dump", Func: ctrl.Dump}, + {Method: http.MethodGet, Path: "/v4/:project/admin/clusters", Func: ctrl.Clusters}, } } diff --git a/server/rest/controller/v3/dependency_controller.go b/server/rest/controller/v3/dependency_controller.go index 11b7351..9f2f9e7 100644 --- a/server/rest/controller/v3/dependency_controller.go +++ b/server/rest/controller/v3/dependency_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,9 +29,9 @@ type DependencyService struct { func (this *DependencyService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodPost, "/registry/v3/dependencies", this.AddDependenciesForMicroServices}, - {rest.HTTPMethodPut, "/registry/v3/dependencies", this.CreateDependenciesForMicroServices}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:consumerId/providers", this.GetConProDependencies}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:providerId/consumers", this.GetProConDependencies}, + {http.MethodPost, "/registry/v3/dependencies", this.AddDependenciesForMicroServices}, + {http.MethodPut, "/registry/v3/dependencies", this.CreateDependenciesForMicroServices}, + {http.MethodGet, "/registry/v3/microservices/:consumerId/providers", this.GetConProDependencies}, + {http.MethodGet, "/registry/v3/microservices/:providerId/consumers", this.GetProConDependencies}, } } diff --git a/server/rest/controller/v3/instance_controller.go b/server/rest/controller/v3/instance_controller.go index 2dc8b73..8504d37 100644 --- a/server/rest/controller/v3/instance_controller.go +++ b/server/rest/controller/v3/instance_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,14 +29,14 @@ type MicroServiceInstanceService struct { func (this *MicroServiceInstanceService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodGet, "/registry/v3/instances", this.FindInstances}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/instances", this.GetInstances}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/instances/:instanceId", this.GetOneInstance}, - {rest.HTTPMethodPost, "/registry/v3/microservices/:serviceId/instances", this.RegisterInstance}, - {rest.HTTPMethodDelete, "/registry/v3/microservices/:serviceId/instances/:instanceId", this.UnregisterInstance}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/properties", this.UpdateMetadata}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/status", this.UpdateStatus}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/heartbeat", this.Heartbeat}, - {rest.HTTPMethodPut, "/registry/v3/heartbeats", this.HeartbeatSet}, + {http.MethodGet, "/registry/v3/instances", this.FindInstances}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/instances", this.GetInstances}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/instances/:instanceId", this.GetOneInstance}, + {http.MethodPost, "/registry/v3/microservices/:serviceId/instances", this.RegisterInstance}, + {http.MethodDelete, "/registry/v3/microservices/:serviceId/instances/:instanceId", this.UnregisterInstance}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/properties", this.UpdateMetadata}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/status", this.UpdateStatus}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/instances/:instanceId/heartbeat", this.Heartbeat}, + {http.MethodPut, "/registry/v3/heartbeats", this.HeartbeatSet}, } } diff --git a/server/rest/controller/v3/instance_watcher.go b/server/rest/controller/v3/instance_watcher.go index 6d0690b..809a77a 100644 --- a/server/rest/controller/v3/instance_watcher.go +++ b/server/rest/controller/v3/instance_watcher.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,6 +29,6 @@ type WatchService struct { func (this *WatchService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/watcher", this.Watch}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/watcher", this.Watch}, } } diff --git a/server/rest/controller/v3/main_controller.go b/server/rest/controller/v3/main_controller.go index 7735496..3720ee4 100644 --- a/server/rest/controller/v3/main_controller.go +++ b/server/rest/controller/v3/main_controller.go @@ -49,8 +49,8 @@ type MainService struct { func (s *MainService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodGet, "/version", s.GetVersion}, - {rest.HTTPMethodGet, "/health", s.ClusterHealth}, + {http.MethodGet, "/version", s.GetVersion}, + {http.MethodGet, "/health", s.ClusterHealth}, } } diff --git a/server/rest/controller/v3/microservice_controller.go b/server/rest/controller/v3/microservice_controller.go index 11a8c6a..3effe4f 100644 --- a/server/rest/controller/v3/microservice_controller.go +++ b/server/rest/controller/v3/microservice_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,12 +29,12 @@ type MicroServiceService struct { func (this *MicroServiceService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodGet, "/registry/v3/existence", this.GetExistence}, - {rest.HTTPMethodGet, "/registry/v3/microservices", this.GetServices}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId", this.GetServiceOne}, - {rest.HTTPMethodPost, "/registry/v3/microservices", this.Register}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/properties", this.Update}, - {rest.HTTPMethodDelete, "/registry/v3/microservices/:serviceId", this.Unregister}, - {rest.HTTPMethodDelete, "/registry/v3/microservices", this.UnregisterServices}, + {http.MethodGet, "/registry/v3/existence", this.GetExistence}, + {http.MethodGet, "/registry/v3/microservices", this.GetServices}, + {http.MethodGet, "/registry/v3/microservices/:serviceId", this.GetServiceOne}, + {http.MethodPost, "/registry/v3/microservices", this.Register}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/properties", this.Update}, + {http.MethodDelete, "/registry/v3/microservices/:serviceId", this.Unregister}, + {http.MethodDelete, "/registry/v3/microservices", this.UnregisterServices}, } } diff --git a/server/rest/controller/v3/query_rule_controller.go b/server/rest/controller/v3/query_rule_controller.go index 4501661..9e8a385 100644 --- a/server/rest/controller/v3/query_rule_controller.go +++ b/server/rest/controller/v3/query_rule_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,9 +29,9 @@ type RuleService struct { func (this *RuleService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodPost, "/registry/v3/microservices/:serviceId/rules", this.AddRule}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/rules", this.GetRules}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/rules/:rule_id", this.UpdateRule}, - {rest.HTTPMethodDelete, "/registry/v3/microservices/:serviceId/rules/:rule_id", this.DeleteRule}, + {http.MethodPost, "/registry/v3/microservices/:serviceId/rules", this.AddRule}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/rules", this.GetRules}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/rules/:rule_id", this.UpdateRule}, + {http.MethodDelete, "/registry/v3/microservices/:serviceId/rules/:rule_id", this.DeleteRule}, } } diff --git a/server/rest/controller/v3/schema_controller.go b/server/rest/controller/v3/schema_controller.go index 5c3f1e0..113a392 100644 --- a/server/rest/controller/v3/schema_controller.go +++ b/server/rest/controller/v3/schema_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,10 +29,10 @@ type SchemaService struct { func (this *SchemaService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.GetSchemas}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.ModifySchema}, - {rest.HTTPMethodDelete, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.DeleteSchemas}, - {rest.HTTPMethodPost, "/registry/v3/microservices/:serviceId/schemas", this.ModifySchemas}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/schemas", this.GetAllSchemas}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.GetSchemas}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.ModifySchema}, + {http.MethodDelete, "/registry/v3/microservices/:serviceId/schemas/:schemaId", this.DeleteSchemas}, + {http.MethodPost, "/registry/v3/microservices/:serviceId/schemas", this.ModifySchemas}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/schemas", this.GetAllSchemas}, } } diff --git a/server/rest/controller/v3/tag_controller.go b/server/rest/controller/v3/tag_controller.go index 552b838..de69685 100644 --- a/server/rest/controller/v3/tag_controller.go +++ b/server/rest/controller/v3/tag_controller.go @@ -17,6 +17,8 @@ package v3 import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/rest/controller/v4" ) @@ -27,9 +29,9 @@ type TagService struct { func (this *TagService) URLPatterns() []rest.Route { return []rest.Route{ - {rest.HTTPMethodPost, "/registry/v3/microservices/:serviceId/tags", this.AddTags}, - {rest.HTTPMethodPut, "/registry/v3/microservices/:serviceId/tags/:key", this.UpdateTag}, - {rest.HTTPMethodGet, "/registry/v3/microservices/:serviceId/tags", this.GetTags}, - {rest.HTTPMethodDelete, "/registry/v3/microservices/:serviceId/tags/:key", this.DeleteTags}, + {http.MethodPost, "/registry/v3/microservices/:serviceId/tags", this.AddTags}, + {http.MethodPut, "/registry/v3/microservices/:serviceId/tags/:key", this.UpdateTag}, + {http.MethodGet, "/registry/v3/microservices/:serviceId/tags", this.GetTags}, + {http.MethodDelete, "/registry/v3/microservices/:serviceId/tags/:key", this.DeleteTags}, } } diff --git a/server/rest/controller/v4/dependency_controller.go b/server/rest/controller/v4/dependency_controller.go index 169dd16..d41fac8 100644 --- a/server/rest/controller/v4/dependency_controller.go +++ b/server/rest/controller/v4/dependency_controller.go @@ -35,10 +35,10 @@ type DependencyService struct { func (s *DependencyService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/dependencies", Func: s.AddDependenciesForMicroServices}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/dependencies", Func: s.CreateDependenciesForMicroServices}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:consumerId/providers", Func: s.GetConProDependencies}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:providerId/consumers", Func: s.GetProConDependencies}, + {Method: http.MethodPost, Path: "/v4/:project/registry/dependencies", Func: s.AddDependenciesForMicroServices}, + {Method: http.MethodPut, Path: "/v4/:project/registry/dependencies", Func: s.CreateDependenciesForMicroServices}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:consumerId/providers", Func: s.GetConProDependencies}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:providerId/consumers", Func: s.GetProConDependencies}, } } diff --git a/server/rest/controller/v4/instance_controller.go b/server/rest/controller/v4/instance_controller.go index 92b4b2b..2c46c32 100644 --- a/server/rest/controller/v4/instance_controller.go +++ b/server/rest/controller/v4/instance_controller.go @@ -38,16 +38,16 @@ type MicroServiceInstanceService struct { func (s *MicroServiceInstanceService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/instances", Func: s.FindInstances}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/instances/action", Func: s.InstancesAction}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: s.GetInstances}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: s.GetOneInstance}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: s.RegisterInstance}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: s.UnregisterInstance}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/properties", Func: s.UpdateMetadata}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/status", Func: s.UpdateStatus}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat", Func: s.Heartbeat}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/heartbeats", Func: s.HeartbeatSet}, + {Method: http.MethodGet, Path: "/v4/:project/registry/instances", Func: s.FindInstances}, + {Method: http.MethodPost, Path: "/v4/:project/registry/instances/action", Func: s.InstancesAction}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: s.GetInstances}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: s.GetOneInstance}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: s.RegisterInstance}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: s.UnregisterInstance}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/properties", Func: s.UpdateMetadata}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/status", Func: s.UpdateStatus}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat", Func: s.Heartbeat}, + {Method: http.MethodPut, Path: "/v4/:project/registry/heartbeats", Func: s.HeartbeatSet}, } } func (s *MicroServiceInstanceService) RegisterInstance(w http.ResponseWriter, r *http.Request) { diff --git a/server/rest/controller/v4/instance_watcher.go b/server/rest/controller/v4/instance_watcher.go index c8bf7f1..7e273be 100644 --- a/server/rest/controller/v4/instance_watcher.go +++ b/server/rest/controller/v4/instance_watcher.go @@ -23,18 +23,29 @@ import ( "github.com/apache/servicecomb-service-center/pkg/log" "github.com/apache/servicecomb-service-center/pkg/rest" "github.com/apache/servicecomb-service-center/server/core" + "github.com/apache/servicecomb-service-center/server/handler/exception" pb "github.com/go-chassis/cari/discovery" "github.com/gorilla/websocket" ) +const ( + APIWatch = "/v4/:project/registry/microservices/:serviceId/watcher" + APIHeartbeat = "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat" +) + +func init() { + exception.RegisterWhitelist(http.MethodGet, APIWatch) + exception.RegisterWhitelist(http.MethodGet, APIHeartbeat) +} + type WatchService struct { // } func (s *WatchService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/watcher", Func: s.Watch}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat", Func: s.Heartbeat}, + {Method: http.MethodGet, Path: APIWatch, Func: s.Watch}, + {Method: http.MethodGet, Path: APIHeartbeat, Func: s.Heartbeat}, } } diff --git a/server/rest/controller/v4/main_controller.go b/server/rest/controller/v4/main_controller.go index 4070578..0ee1b69 100644 --- a/server/rest/controller/v4/main_controller.go +++ b/server/rest/controller/v4/main_controller.go @@ -48,8 +48,8 @@ type MainService struct { func (s *MainService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/version", Func: s.GetVersion}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/health", Func: s.ClusterHealth}, + {Method: http.MethodGet, Path: "/v4/:project/registry/version", Func: s.GetVersion}, + {Method: http.MethodGet, Path: "/v4/:project/registry/health", Func: s.ClusterHealth}, } } diff --git a/server/rest/controller/v4/microservice_controller.go b/server/rest/controller/v4/microservice_controller.go index 6c7797d..9f6fc31 100644 --- a/server/rest/controller/v4/microservice_controller.go +++ b/server/rest/controller/v4/microservice_controller.go @@ -38,13 +38,13 @@ type MicroServiceService struct { func (s *MicroServiceService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/existence", Func: s.GetExistence}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices", Func: s.GetServices}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId", Func: s.GetServiceOne}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices", Func: s.Register}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/properties", Func: s.Update}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId", Func: s.Unregister}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices", Func: s.UnregisterServices}, + {Method: http.MethodGet, Path: "/v4/:project/registry/existence", Func: s.GetExistence}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices", Func: s.GetServices}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId", Func: s.GetServiceOne}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices", Func: s.Register}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/properties", Func: s.Update}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId", Func: s.Unregister}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices", Func: s.UnregisterServices}, } } diff --git a/server/rest/controller/v4/query_rule_controller.go b/server/rest/controller/v4/query_rule_controller.go index c35908c..53ebd45 100644 --- a/server/rest/controller/v4/query_rule_controller.go +++ b/server/rest/controller/v4/query_rule_controller.go @@ -37,10 +37,10 @@ type RuleService struct { func (s *RuleService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices/:serviceId/rules", Func: s.AddRule}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/rules", Func: s.GetRules}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/rules/:rule_id", Func: s.UpdateRule}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/rules/:rule_id", Func: s.DeleteRule}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices/:serviceId/rules", Func: s.AddRule}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/rules", Func: s.GetRules}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/rules/:rule_id", Func: s.UpdateRule}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/rules/:rule_id", Func: s.DeleteRule}, } } func (s *RuleService) AddRule(w http.ResponseWriter, r *http.Request) { diff --git a/server/rest/controller/v4/schema_controller.go b/server/rest/controller/v4/schema_controller.go index 802ed84..b02e391 100644 --- a/server/rest/controller/v4/schema_controller.go +++ b/server/rest/controller/v4/schema_controller.go @@ -41,16 +41,16 @@ type SchemaService struct { func (s *SchemaService) URLPatterns() []rest.Route { var r = []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.GetSchemas}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.DeleteSchemas}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices/:serviceId/schemas", Func: s.ModifySchemas}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/schemas", Func: s.GetAllSchemas}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.GetSchemas}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.DeleteSchemas}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices/:serviceId/schemas", Func: s.ModifySchemas}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/schemas", Func: s.GetAllSchemas}, } if !config.GetRegistry().SchemaDisable { - r = append(r, rest.Route{Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.ModifySchema}) + r = append(r, rest.Route{Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.ModifySchema}) } else { - r = append(r, rest.Route{Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.DisableSchema}) + r = append(r, rest.Route{Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/schemas/:schemaId", Func: s.DisableSchema}) } return r diff --git a/server/rest/controller/v4/tag_controller.go b/server/rest/controller/v4/tag_controller.go index bcf1644..964bdf4 100644 --- a/server/rest/controller/v4/tag_controller.go +++ b/server/rest/controller/v4/tag_controller.go @@ -37,10 +37,10 @@ type TagService struct { func (s *TagService) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices/:serviceId/tags", Func: s.AddTags}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/tags/:key", Func: s.UpdateTag}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/microservices/:serviceId/tags", Func: s.GetTags}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/tags/:key", Func: s.DeleteTags}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices/:serviceId/tags", Func: s.AddTags}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/tags/:key", Func: s.UpdateTag}, + {Method: http.MethodGet, Path: "/v4/:project/registry/microservices/:serviceId/tags", Func: s.GetTags}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/tags/:key", Func: s.DeleteTags}, } } diff --git a/server/rest/govern/controller_v3.go b/server/rest/govern/controller_v3.go index 8df81af..20c2a38 100644 --- a/server/rest/govern/controller_v3.go +++ b/server/rest/govern/controller_v3.go @@ -18,6 +18,8 @@ package govern import ( + "net/http" + "github.com/apache/servicecomb-service-center/pkg/rest" ) @@ -29,8 +31,8 @@ type ResourceV3 struct { // URLPatterns 路由 func (governService *ResourceV3) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/registry/v3/govern/service/:serviceId", Func: governService.GetServiceDetail}, - {Method: rest.HTTPMethodGet, Path: "/registry/v3/govern/relation", Func: governService.GetGraph}, - {Method: rest.HTTPMethodGet, Path: "/registry/v3/govern/services", Func: governService.GetAllServicesInfo}, + {Method: http.MethodGet, Path: "/registry/v3/govern/service/:serviceId", Func: governService.GetServiceDetail}, + {Method: http.MethodGet, Path: "/registry/v3/govern/relation", Func: governService.GetGraph}, + {Method: http.MethodGet, Path: "/registry/v3/govern/services", Func: governService.GetAllServicesInfo}, } } diff --git a/server/rest/govern/controller_v4.go b/server/rest/govern/controller_v4.go index c28673f..0532d7d 100644 --- a/server/rest/govern/controller_v4.go +++ b/server/rest/govern/controller_v4.go @@ -38,11 +38,11 @@ type ResourceV4 struct { // URLPatterns 路由 func (governService *ResourceV4) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/govern/microservices/:serviceId", Func: governService.GetServiceDetail}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/govern/relations", Func: governService.GetGraph}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/govern/microservices", Func: governService.GetAllServicesInfo}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/govern/apps", Func: governService.GetAllApplications}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/govern/statistics", Func: governService.GetAllServicesStatistics}, + {Method: http.MethodGet, Path: "/v4/:project/govern/microservices/:serviceId", Func: governService.GetServiceDetail}, + {Method: http.MethodGet, Path: "/v4/:project/govern/relations", Func: governService.GetGraph}, + {Method: http.MethodGet, Path: "/v4/:project/govern/microservices", Func: governService.GetAllServicesInfo}, + {Method: http.MethodGet, Path: "/v4/:project/govern/apps", Func: governService.GetAllApplications}, + {Method: http.MethodGet, Path: "/v4/:project/govern/statistics", Func: governService.GetAllServicesStatistics}, } } diff --git a/syncer/pkg/mock/mockservicecenter/servicecenter.go b/syncer/pkg/mock/mockservicecenter/servicecenter.go index 6274018..212010a 100644 --- a/syncer/pkg/mock/mockservicecenter/servicecenter.go +++ b/syncer/pkg/mock/mockservicecenter/servicecenter.go @@ -44,14 +44,14 @@ type mockServer struct{} func (m *mockServer) URLPatterns() []rest.Route { return []rest.Route{ - {Method: rest.HTTPMethodGet, Path: "/v4/:project/admin/dump", Func: m.GetAll}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/existence", Func: m.ServiceExistence}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices", Func: m.CreateService}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId", Func: m.DeleteService}, - {Method: rest.HTTPMethodGet, Path: "/v4/:project/registry/instances", Func: m.DiscoveryInstances}, - {Method: rest.HTTPMethodPost, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: m.RegisterInstance}, - {Method: rest.HTTPMethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: m.UnregisterInstance}, - {Method: rest.HTTPMethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat", Func: m.Heartbeat}, + {Method: http.MethodGet, Path: "/v4/:project/admin/dump", Func: m.GetAll}, + {Method: http.MethodGet, Path: "/v4/:project/registry/existence", Func: m.ServiceExistence}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices", Func: m.CreateService}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId", Func: m.DeleteService}, + {Method: http.MethodGet, Path: "/v4/:project/registry/instances", Func: m.DiscoveryInstances}, + {Method: http.MethodPost, Path: "/v4/:project/registry/microservices/:serviceId/instances", Func: m.RegisterInstance}, + {Method: http.MethodDelete, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId", Func: m.UnregisterInstance}, + {Method: http.MethodPut, Path: "/v4/:project/registry/microservices/:serviceId/instances/:instanceId/heartbeat", Func: m.Heartbeat}, } }