The strip_path
property
It may be desirable to specify a URI prefix to match an API, but not
include it in the upstream request. To do so, use the strip_path
boolean
property by configuring an API like this:
{
"name": "My API",
"proxy": {
"strip_path" : true,
"listen_path": "/service/*",
"upstreams" : {
"balancing": "roundrobin",
"targets": [
{"target": "http://my-api.com"}
]
},
"methods": ["GET"]
}
}
Enabling this flag instructs Janus that when proxying this API, it should not include the matching URI prefix in the upstream request's URI. For example, the following client's request to the API configured as above:
GET /service/path/to/resource HTTP/1.1
Host: my-api.com
Will cause Janus to send the following request to your upstream service:
GET /path/to/resource HTTP/1.1
Host: my-api.com
The strip_path
property can be used in tandem with Named URL Parameters
.
i.e:
{
"name": "My API",
"proxy": {
"strip_path" : true,
"listen_path": "/prepath/{service}/*",
"upstreams" : {
"balancing": "roundrobin",
"targets": [
{"target": "http://{service}.com"}
]
},
"methods": ["GET"]
}
}
Akin to the previous example a request to janus like this:
GET /prepath/my-service/path/to/resource HTTP/1.1
Host: janus
Will cause Janus to send the following request to your upstream service:
GET /path/to/resource HTTP/1.1
Host: my-service.com
This is because when the strip_path
property is set to true and a Named URL parameter
is used, the first instance of each section of the listen_path
(delineated by /
) will be removed from the upstream request. This includes the parameter name and regex.
In addition to that, the first instance of each Named URL parameter
will be removed from the upstream request.