Software AG Products 10.5 | Using API Gateway | Policies | System-defined Stages and Policies | Routing | Context-based Routing
 
Context-based Routing
If you have a native API that is hosted at two or more endpoints, you can use the Context-based protocol to route specific types of messages to specific endpoints. The requests are routed according to the context-based routing rules you create. For example, if your entry protocol is HTTP or HTTPS, you can select the Context-based routing. A routing rule specifies where requests should be routed, and the criteria by which they should be routed there. You may specify how to authenticate requests.
The table lists the properties that you can specify for this policy:
Parameter
Description
Default Route To. Specifies the URLs of two or more native services in a pool to which the requests are routed.
Endpoint URI
Specifies the URI of the native API endpoint to route the request to in case all routing rules evaluate to False. Service registries that have been added to the API Gateway instance are also included in the list.
If you choose a service registry, API Gateway sends a request to the service registry to discover the IP address and port at which the native service is running. API Gateway replaces the service registry alias in the Endpoint URI with the IP address and port returned by the service registry.
For example, if your service is hosted at the URL: http://host:port/abc/, you need to configure the Endpoint URI as: http://${ServiceRegistryName}/abc/.
HTTP Method
This is applicable to REST-based APIs.
Specifies the available routing methods: GET, POST, PUT, DELETE, and CUSTOM (default).
When CUSTOM is selected, the HTTP method in the incoming request is sent to the native service. When other methods are selected, the selected method is used in the request sent to the native service.
Note:
Software AG recommends to use Request Transformation > Method Transformation to achieve this as other transformations can also be done under the same policy.
SOAP Optimization Method
This is applicable for SOAP-based APIs.
Specifies the optimization methods that API Gateway can use to parse SOAP requests to the native API.
Select one of the following options:
*MTOM.API Gateway uses the Message Transmission Optimization Mechanism (MTOM) to parse SOAP requests to the API.
*SwA. API Gateway uses the SOAP with Attachment (SwA) technique to parse SOAP requests to the API.
*None. API Gateway does not use any optimization method to parse the SOAP requests to the API. This is selected by default.
HTTP Connection Timeout (seconds)
Specifies the time interval (in seconds) after which a connection attempt times out.
The precedence of the Connection Timeout configuration is as follows:
1. If you specify a value for the Connection timeout field in routing endpoint alias, then the Connection timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Connection timeout field in routing endpoint alias, then API Gateway uses the value specified in the Connection timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Connection timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then API Gateway uses the value specified in this pg.endpoint.connectionTimeout property.
4. If you do not specify any value for pg.endpoint.connectionTimeout, then API Gateway uses the default value of 30 seconds.
Read Timeout (seconds)
Specifies the time interval (in seconds) after which a socket read attempt times out.
The precedence of the Read Timeout configuration is as follows:
1. If you specify a value for the Read timeout field in routing endpoint alias, then the Read timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Read timeout field in routing endpoint alias, then API Gateway uses the value specified in the Read Timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Read timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then API Gateway uses the value specified in this pg.endpoint.readTimeout property.
4. If you do not specify any value for pg.endpoint.readTimeout, then API Gateway uses the default value of 30 seconds.
SSL Configuration. Configures keystore, key alias, and truststore for securing connections to native APIs.
Keystore Alias
Specifies the keystore alias configured in API Gateway. This value (along with the value of Client Certificate Alias) is used for performing SSL client authentication.
Lists all available keystores. If you have not configured any keystore, the list is empty.
Key Alias
Specifies the alias for the private key, which must be stored in the keystore specified by the keystore alias.
Truststore Alias
Specifies the alias for the truststore that contains the list of CA certificates that API Gateway uses to validate the trust relationship with the native API.
If you do not configure any truststore alias, it implies that API Gateway does not validate the certificates provided by native APIs.
Pass WS-Security Headers
This is applicable for SOAP-based APIs.
Selecting this indicates that API Gateway should pass the WS-Security headers of the incoming requests to the native API.
Service Registry Configuration
Service Discovery Endpoint Parameter
Values required for constructing the discovery service URI.
*Parameter: An alias that you have included in the discovery service URI while adding the service registry to API Gateway.
*Value: A value for the path parameter. The alias specified in Path Parameter is substituted with this value when invoking the discovery service.
For example: if the service registry configuration of the service registry that you have selected in Endpoint URI has Service discovery path set to "/catalog/service/{serviceName}" (and the {serviceName} alias is intended for passing the service name), you must enter {serviceName} as Parameter and the name of the service as Value.
Rule. Defines the routing decisions based on one of the following routing options.
Name
Provide a name for the rule.
Condition Operator
Specifies the condition operator to be used.
Select one of the following operators:
*OR. Specifies that one of the set conditions should be applied.
*AND. Specifies all the set conditions should be applied.
Condition
Specify the context variables for processing client requests.
Variable
Select any of the following variables:
*Consumer. Specifies the name of the consumer application in the text box.
*Variable Value. Provide a value in the Variable Value text box.
*Date
*Operator. Select an operator: After or Before .
*Variable Value. Type a date value in the text box.
*IPV4. Specifies that IP version to be IPV4.
*From IP.Type an IP address range.
*To IP. Type an IP address range.
*IPV6. Specifies that IP version to be IPV4.
*From IP. Type an IP address range.
*To IP. Type an IP address range.
*Predefined Context Variable
*Predefined Context. Select a predefined context.
*Operator. Select one of the following operators: Equal To or Not Equal To.
*Variable Value. Type a value for the selected predefined context.
*Predefined Context Variable
*Predefined Context. Select a predefined context. The available variables are:
*User. API Gateway registered user.
*Inbound HTTP method. The HTTP method used by the client to send the request (GET, POST, PUT, DELETE, PATCH)
*Routing method. The method used by the routing policy when you select CUSTOM as the HTTP method. If you do not define this context variable, then the method used is from the Inbound HTTP method.
*Inbound content type. Content type of the request.
*Inbound accept. Accept header in the incoming request from the client.
*Inbound protocol. The protocol (HTTP or HTTPS) of the request.
*Inbound request URI. A partial reference to an API (for HTTP/HTTPS only). The protocol, host and port are not part of the value. For example, if the API is invoked: http://host:port/gateway/API then the expected value of this variable would be /gateway/API.
For a REST API, the URL also includes query string parameters. For example, if the following API is invoked: http://host:port/gateway/cars?vin=1234 the expected value of this variable would be /gateway/cars?vin1234.
*Inbound IP. Client IP
*Gateway hostname. API Gateway host name.
*Gateway IP. API Gateway IP address
*Operation name. Operation name for SOAP APIs. It is empty for REST API.
*Operator. Select one of the following operators: Equal To or Not Equal To.
*Variable Value. Type a value for the selected predefined context.
*Custom Context Variable
*Variable Name. Type a name for the custom context variable. Use the pub.apigateway.ctxvar:setContextVariable API for setting the value for the custom context variable. All custom-defined context variables must be declared in a custom namespace that is identified by using the prefix mx (for example, mx:CUSTOM_VARIABLE). All parameter names are case-sensitive. For more information on pub.apigateway.ctxvar:setContextVariable service, see The API for Context Variables.
*Data Type. Select the data type: String or Integer.
*Operator. Select one of the following operators based on the Data Type selected:
*String: Equal To or Not Equal To
*Integer: Equal To, Not Equal To, Greater Than, or Less Than
*Variable Value. Type a value for the selected custom context.
*Time
*Operator. Select an operator: After or Before.
*Hours. Type a time value in hours.
*Minutes. Type a time value in minutes.
Route To. Specifies the endpoint URI of native services in a pool to which the requests are routed.
Endpoint URI
Specifies the URI of the native API endpoint to route the request to. You can use service registries in a similar manner as described in the main Endpoint URI above.
HTTP Method
This is applicable for REST-based APIs.
Specifies the available routing methods: GET, POST, PUT, DELETE, and CUSTOM (default).
When CUSTOM is selected, the HTTP method in the incoming request is sent to the native service. When other methods are selected, the selected method is used in the request sent to the native service.
Soap Optimization Method
This is applicable for SOAP-based APIs.
Specifies values to enable SSL authentication for SOAP APIs.
Select one of the following options:
*MTOM. API Gateway uses the Message Transmission Optimization Mechanism (MTOM) to parse SOAP requests to the API.
*SwA. API Gateway uses the SOAP with Attachment (SwA) technique to parse SOAP requests to the API.
*None. API Gateway does not use any optimization method to parse the SOAP requests to the API. This is selected by default.
HTTP Connection Timeout (seconds)
Specifies the time interval (in seconds) after which a connection attempt times out.
The precedence of the Connection Timeout configuration is as follows:
1. If you specify a value for the Connection timeout field in routing endpoint alias, then the Connection timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Connection timeout field in routing endpoint alias, then API Gateway uses the value specified in the Connection timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Connection timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then API Gateway uses the value specified in this pg.endpoint.connectionTimeout property.
4. If you do not specify any value for pg.endpoint.connectionTimeout, then API Gateway uses the default value of 30 seconds.
Read Timeout (seconds)
Specifies the time interval (in seconds) after which a socket read attempt times out.
The precedence of the Read Timeout configuration is as follows:
1. If you specify a value for the Read timeout field in routing endpoint alias, then the Read timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Read timeout field in routing endpoint alias, then API Gateway uses the value specified in the Read Timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Read timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then API Gateway uses the value specified in this pg.endpoint.readTimeout property.
4. If you do not specify any value for pg.endpoint.readTimeout, then API Gateway uses the default value of 30 seconds.
Pass WS-Security Headers
This is applicable for SOAP-based APIs.
Selecting this indicates that API Gateway should pass the WS-Security headers of the incoming requests to the native API.
SSL Configuration
Configures keystore, key alias, and truststore for securing connections to native APIs.
Provide the following information:
*Keystore Alias. Specifies the keystore alias configured in API Gateway. This value (along with the value of Client Certificate Alias) is used for performing SSL client authentication.
Lists all available keystores. If you have not configured any keystore, the list is empty.
*Key Alias. Specifies the alias for the private key, which must be stored in the keystore specified by the keystore alias.
*Truststore Alias. Specifies the alias for the truststore that contains the list of CA certificates that API Gateway uses to validate the trust relationship with the native API.
If you do not configure any truststore alias, it implies that API Gateway does not validate the certificates provided by native APIs.
Service Registry Configuration
Service Discovery Endpoint Parameter
Values required for constructing the discovery service URI.
*Parameter: An alias that you have included in the discovery service URI while adding the service registry to API Gateway.
*Value: A value for the path parameter. The alias specified in Path Parameter is substituted with this value when invoking the discovery service.
For example: if the service registry configuration of the service registry that you have selected in Endpoint URI has Service discovery path set to "/catalog/service/{serviceName}" (and the {serviceName} alias is intended for passing the service name), you must enter {serviceName} as Parameter and the name of the service as Value.