Client Route is the configuration settings that determine how incoming requests to your API Proxies will be routed. For detailed information about the Client Route concept, you can refer to the Client Route page.Documentation Index
Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
Use this file to discover all available pages before exploring further.
Client Route Features
Overview:
Multiple Paths
Host-Based Routing
Header-Based Routing
Method-Based Routing
Routing Priority Order
The Gateway evaluates incoming requests according to the following priority order:1. Relative Path
2. Hosts
3. Headers
4. Methods
Matching Logic
Hosts (OR Logic)
When multiple hosts are defined, it works with OR logic. That is, matching any one of the defined hosts is sufficient. Example:hostname_x.com or hostname_y.com, the condition is met.
Headers (AND Logic)
When multiple headers are defined, it works with AND logic. That is, all defined headers must match. Example:testmode: true and test: true headers must be present in the request.
Path Matching
- Relative path matching has the highest priority
- More specific (longer) paths are evaluated before more general (shorter) paths
- If an exact match is not found, the closest parent path is used
Method Matching
- Method checking has the lowest priority
- If not specified, all HTTP methods are accepted
Wildcard Hostname Usage
Apinizer supports wildcard (joker character) usage to provide flexibility in host definitions. Wildcard hostnames allow all Host header values that match a certain pattern to satisfy the condition and thus match the related Route.Wildcard Rules
Wildcard Examples
Left-Side Wildcard
- a.example.com
- x.y.example.com
- api.example.com
- test.subdomain.example.com
Right-Side Wildcard
- example.com
- example.org
- example.net
- example.io
Example Scenario
The table below shows 5 different API Proxies and the Client Route configurations defined for them:| Proxy ID | Relative Path | Methods | Hosts (OR) | Headers (AND) |
|---|---|---|---|---|
| 1 | /jokes | - | - | testmode:true, test:true |
| 2 | /jokes | - | hostname_x.com, hostname_y.com | - |
| 3 | /jokes1/endpoint_x | - | - | - |
| 4 | /jokes1 | - | - | - |
| 5 | /jokes | - | - | - |
Routing Examples
According to this configuration, incoming requests are routed as follows:Example 1: Basic Routing
Example 1: Basic Routing
Example 2: Host-Based Routing
Example 2: Host-Based Routing
Example 3: Routing with Missing Header
Example 3: Routing with Missing Header
Example 4: Full Header Match
Example 4: Full Header Match
Example 5: Path Priority - Basic Path
Example 5: Path Priority - Basic Path
Example 6: Path Priority - Long Path
Example 6: Path Priority - Long Path
Example 7: Path with Sub-Path
Example 7: Path with Sub-Path
Example 8: Path Match - Different Sub-Path
Example 8: Path Match - Different Sub-Path
Example 9: Host and Header Combination
Example 9: Host and Header Combination
Example 10: Different Path with Host and Header
Example 10: Different Path with Host and Header
Routing Combination Table
This table shows from the API Proxy perspective how the API Proxy is selected:| Status | Description |
|---|---|
| None | Not present in the API proxy definition. What the client sends is not checked. |
| Matched | Present in the API proxy definition. What the client sends is checked, and it sent the expected value. |
| Not Matched | Present in the API proxy definition. What the client sends is checked, but it did not send the expected value. |
| # | HOST | PATH | METHOD | HEADER | RESULT | EXPLANATION |
|---|---|---|---|---|---|---|
| 1 | None | None | None | None | ✓ SELECTED | No criteria defined |
| 2 | None | None | None | Matched | ✓ SELECTED | All defined criteria OK (HEADER) |
| 3 | None | None | None | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 4 | None | None | Matched | None | ✓ SELECTED | All defined criteria OK (METHOD) |
| 5 | None | None | Matched | Matched | ✓ SELECTED | All defined criteria OK (METHOD, HEADER) |
| 6 | None | None | Matched | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 7 | None | None | Not Matched | None | ✗ REJECTED | Cannot route because METHOD did not match |
| 8 | None | None | Not Matched | Matched | ✗ REJECTED | Cannot route because METHOD did not match |
| 9 | None | None | Not Matched | Not Matched | ✗ REJECTED | Cannot route because METHOD, HEADER did not match |
| 10 | None | Matched | None | None | ✓ SELECTED | All defined criteria OK (PATH) |
| 11 | None | Matched | None | Matched | ✓ SELECTED | All defined criteria OK (PATH, HEADER) |
| 12 | None | Matched | None | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 13 | None | Matched | Matched | None | ✓ SELECTED | All defined criteria OK (PATH, METHOD) |
| 14 | None | Matched | Matched | Matched | ✓ SELECTED | All defined criteria OK (PATH, METHOD, HEADER) |
| 15 | None | Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 16 | None | Matched | Not Matched | None | ✗ REJECTED | Cannot route because METHOD did not match |
| 17 | None | Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because METHOD did not match |
| 18 | None | Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because METHOD, HEADER did not match |
| 19 | None | Not Matched | None | None | ✗ REJECTED | Cannot route because PATH did not match |
| 20 | None | Not Matched | None | Matched | ✗ REJECTED | Cannot route because PATH did not match |
| 21 | None | Not Matched | None | Not Matched | ✗ REJECTED | Cannot route because PATH, HEADER did not match |
| 22 | None | Not Matched | Matched | None | ✗ REJECTED | Cannot route because PATH did not match |
| 23 | None | Not Matched | Matched | Matched | ✗ REJECTED | Cannot route because PATH did not match |
| 24 | None | Not Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because PATH, HEADER did not match |
| 25 | None | Not Matched | Not Matched | None | ✗ REJECTED | Cannot route because PATH, METHOD did not match |
| 26 | None | Not Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because PATH, METHOD did not match |
| 27 | None | Not Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because PATH, METHOD, HEADER did not match |
| 28 | Matched | None | None | None | ✓ SELECTED | All defined criteria OK (HOST) |
| 29 | Matched | None | None | Matched | ✓ SELECTED | All defined criteria OK (HOST, HEADER) |
| 30 | Matched | None | None | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 31 | Matched | None | Matched | None | ✓ SELECTED | All defined criteria OK (HOST, METHOD) |
| 32 | Matched | None | Matched | Matched | ✓ SELECTED | All defined criteria OK (HOST, METHOD, HEADER) |
| 33 | Matched | None | Matched | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 34 | Matched | None | Not Matched | None | ✗ REJECTED | Cannot route because METHOD did not match |
| 35 | Matched | None | Not Matched | Matched | ✗ REJECTED | Cannot route because METHOD did not match |
| 36 | Matched | None | Not Matched | Not Matched | ✗ REJECTED | Cannot route because METHOD, HEADER did not match |
| 37 | Matched | Matched | None | None | ✓ SELECTED | All defined criteria OK (HOST, PATH) |
| 38 | Matched | Matched | None | Matched | ✓ SELECTED | All defined criteria OK (HOST, PATH, HEADER) |
| 39 | Matched | Matched | None | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 40 | Matched | Matched | Matched | None | ✓ SELECTED | All defined criteria OK (HOST, PATH, METHOD) |
| 41 | Matched | Matched | Matched | Matched | ✓ SELECTED | All defined criteria OK (HOST, PATH, METHOD, HEADER) |
| 42 | Matched | Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because HEADER did not match |
| 43 | Matched | Matched | Not Matched | None | ✗ REJECTED | Cannot route because METHOD did not match |
| 44 | Matched | Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because METHOD did not match |
| 45 | Matched | Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because METHOD, HEADER did not match |
| 46 | Matched | Not Matched | None | None | ✗ REJECTED | Cannot route because PATH did not match |
| 47 | Matched | Not Matched | None | Matched | ✗ REJECTED | Cannot route because PATH did not match |
| 48 | Matched | Not Matched | None | Not Matched | ✗ REJECTED | Cannot route because PATH, HEADER did not match |
| 49 | Matched | Not Matched | Matched | None | ✗ REJECTED | Cannot route because PATH did not match |
| 50 | Matched | Not Matched | Matched | Matched | ✗ REJECTED | Cannot route because PATH did not match |
| 51 | Matched | Not Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because PATH, HEADER did not match |
| 52 | Matched | Not Matched | Not Matched | None | ✗ REJECTED | Cannot route because PATH, METHOD did not match |
| 53 | Matched | Not Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because PATH, METHOD did not match |
| 54 | Matched | Not Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because PATH, METHOD, HEADER did not match |
| 55 | Not Matched | None | None | None | ✗ REJECTED | Cannot route because HOST did not match |
| 56 | Not Matched | None | None | Matched | ✗ REJECTED | Cannot route because HOST did not match |
| 57 | Not Matched | None | None | Not Matched | ✗ REJECTED | Cannot route because HOST, HEADER did not match |
| 58 | Not Matched | None | Matched | None | ✗ REJECTED | Cannot route because HOST did not match |
| 59 | Not Matched | None | Matched | Matched | ✗ REJECTED | Cannot route because HOST did not match |
| 60 | Not Matched | None | Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, HEADER did not match |
| 61 | Not Matched | None | Not Matched | None | ✗ REJECTED | Cannot route because HOST, METHOD did not match |
| 62 | Not Matched | None | Not Matched | Matched | ✗ REJECTED | Cannot route because HOST, METHOD did not match |
| 63 | Not Matched | None | Not Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, METHOD, HEADER did not match |
| 64 | Not Matched | Matched | None | None | ✗ REJECTED | Cannot route because HOST did not match |
| 65 | Not Matched | Matched | None | Matched | ✗ REJECTED | Cannot route because HOST did not match |
| 66 | Not Matched | Matched | None | Not Matched | ✗ REJECTED | Cannot route because HOST, HEADER did not match |
| 67 | Not Matched | Matched | Matched | None | ✗ REJECTED | Cannot route because HOST did not match |
| 68 | Not Matched | Matched | Matched | Matched | ✗ REJECTED | Cannot route because HOST did not match |
| 69 | Not Matched | Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, HEADER did not match |
| 70 | Not Matched | Matched | Not Matched | None | ✗ REJECTED | Cannot route because HOST, METHOD did not match |
| 71 | Not Matched | Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because HOST, METHOD did not match |
| 72 | Not Matched | Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, METHOD, HEADER did not match |
| 73 | Not Matched | Not Matched | None | None | ✗ REJECTED | Cannot route because HOST, PATH did not match |
| 74 | Not Matched | Not Matched | None | Matched | ✗ REJECTED | Cannot route because HOST, PATH did not match |
| 75 | Not Matched | Not Matched | None | Not Matched | ✗ REJECTED | Cannot route because HOST, PATH, HEADER did not match |
| 76 | Not Matched | Not Matched | Matched | None | ✗ REJECTED | Cannot route because HOST, PATH did not match |
| 77 | Not Matched | Not Matched | Matched | Matched | ✗ REJECTED | Cannot route because HOST, PATH did not match |
| 78 | Not Matched | Not Matched | Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, PATH, HEADER did not match |
| 79 | Not Matched | Not Matched | Not Matched | None | ✗ REJECTED | Cannot route because HOST, PATH, METHOD did not match |
| 80 | Not Matched | Not Matched | Not Matched | Matched | ✗ REJECTED | Cannot route because HOST, PATH, METHOD did not match |
| 81 | Not Matched | Not Matched | Not Matched | Not Matched | ✗ REJECTED | Cannot route because HOST, PATH, METHOD, HEADER did not match |
Important Notes
Path Matching
Path Matching
- Relative path matching has the highest priority
- More specific (longer) paths are evaluated before more general (shorter) paths
- If an exact match is not found, the closest parent path is used
Host Matching
Host Matching
- Multiple hosts can be defined
- Hosts work with OR logic
- If the host value in the request matches any of the defined hosts, the condition is met
Header Matching
Header Matching
- Multiple headers can be defined
- Headers work with AND logic
- All headers defined in the request must be present
- In case of missing or incorrect headers, it moves to the next suitable proxy
Method Matching
Method Matching
- Method checking has the lowest priority
- If not specified, all HTTP methods are accepted

