The Dispatcher service is an API Gateway providing a way to route APIs. It is built based on the Spring Cloud Gateway and includes all its features (as describe in the Spring Cloud Gateway public documentation). It also provides path rewriting rules for Yambas and the ApiOmat cloud environment. See How It works to have a deeper understanding of how the Spring Cloud Gateway works.
Dispatcher loads all rulesets at service start. Therefore Consul is queried for all existing services and the contextPath of each service is used to build up a rule for redirection to that service if the context path matches. If new services are registered at Consul, the ruleset has to be refreshed for Dispatcher to become aware of new services. More information: Actuator API
curl -X POST localhost:8000
Getting existing rules
Service registration tweaks
Other services can modify the behavior how they get registered at Dispatcher using tags in the discovery configuration ( spring.cloud.consul.dicovery.tags ):
registerAsYambasContextPath: If set, the microservice's REST interface path will be rewritten to match the YAMBAS REST path; this is especially used for generated microservices to make them transparent to existing SDKs.
notRegisterOnGateway: If set, the microservice will not be exposed through the gateway and will be only accessible behind the Dispatcher.
From version 1.0.1 Dispatcher have the following CORS configuration as default :
- DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
This mean that by default :
Dispatcher accept call any path, from any origin, with any headers using http method GET, POST, PUT, DELETE or OPTIONS.
Dispatcher use a global filter "DedupeResponseHeader" which will remove duplicate value for headers "Access-Control-Allow-Credentials" and "Access-Control-Allow-Origin" (As default it keep the first value only).