Similar to request headers, we also allow for operations to be run on the headers of the router responses
propagate
requests.
first_write
: Propagates the first occurrence of a header from any subgraph to the client. Once a header is set, subsequent values from other subgraphs are ignored.
last_write
: Propagates the last occurrence of a header from any subgraph to the client, overwriting earlier values.
append
: Combines all header values from different subgraphs into a single, comma-separated list. This is helpful for aggregating values such as roles or flags that need to be merged.
all
we address all subgraph requests. Next, we can define several rules on the client’s request. The operation propagate
forwards all matching client request headers to the subgraphs. The operation set
sets a new header which is forward to the subgraphs.
The subgraphs
section allows to propagate headers for specific subgraphs. The name must match with the subgraph name in the Studio.
algorithm
- This defines the algorithm, selecting between first_write
, last_write
, and append
named
- It exactly matches on the header name.
matching
- Regex matches on the header name. You can useregex101.com to test your regexes. Go to the website and select Golang
on the left panel. Note: The Router never propagates hop-by-hop headers (such as Connection
) when propagating by regex.
negate_match
- If set to true, the result of the matching
regex will be inverted. This is useful for simulating negative lookahead behavior, which is not natively supported.
rename
- Replaces the identified header based on its name or matching criteria and transfers the value to the newly specified header.
default
- Fallback to this value when the named
, matching
or rename
header could not be found.
set
- Sets a header on the request forward to the subgraph. You must set the following values:
name
- The name of the header to set
value
- The value to set for the header
x-my-header
to X-My-Header.
Write your rule accordingly or use (?i)``^X-Test-.*
flags to make your regex case insensitive.