Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Router: serviceIdQueryParameter

Allow query service_id to override header service_id.

Type: Boolean. Default: false.

Meaning

Enables legacy clients to select a registered service using the service_id query key. The property is named serviceIdQueryParameter, but the query parameter itself uses an underscore.

serviceIdQueryParameter: false

The router does not use the query key as a routing override. It obtains routing headers such as service_id from the client or preceding path/service handlers. It does not automatically strip a query key simply because its name is service_id when this option is disabled.

serviceIdQueryParameter: true

For this request:

GET /v1/address?service_id=party.address-2.0.0&country=CA HTTP/1.1
Host: gateway.example.com
service_id: party.address-1.0.0

The query value selects party.address-2.0.0, overriding the header’s party.address-1.0.0. The intended downstream request keeps country=CA and removes the routing query key. Rust explicitly removes it when constructing the upstream URI. Java removes it from the parsed query map, but its no-query-rewrite branch copies the original query string; verify stripping on that Java path rather than relying on it as a confidentiality guarantee.

An explicit service_url still takes precedence over service-ID discovery. env_tag can select the environment for service-ID routing. Routing headers service_id and service_url are removed from the upstream request by the proxy.

Use this only for clients that cannot manipulate headers. It lets the client override a service ID assigned by earlier handlers; authorize the request and its routing choice through the appropriate handler chain.

See Router configuration for Portal/values.yml syntax, runtime compatibility, and source references.