📗
Janus Manual
  • Introduction
  • Installation
    • Docker
  • Quick Start
    • Authenticating
    • Add an endpoint
    • Modify (Update/Delete) an endpoint
    • Add Plugins
    • Authentication
    • Adding your API - File System
  • Clustering/HA
  • Proxy Reference
    • Terminology
    • Overview
    • Routing capabilities
    • Load Balacing
    • Request Host header
      • Using wildcard hostnames
      • The preserve_host property
    • Request URI
      • The strip_path property
      • The append_path property
    • Request HTTP method
    • Routing priorities
    • Conclusion
  • Plugins
    • Basic
    • Organization
    • Body Limit
    • Circuit Breaker
    • Compression
    • CORS
    • OAuth
    • Rate Limit
    • Request Transformer
    • Response Transformer
    • Retry
  • Auth
    • OAuth 2.0
  • Misc
    • Health Checks
    • Monitoring
    • Tracing
  • Known Issues
    • Stale HTTP Keep-Alive
  • Upgrade Notes
    • 2.x to 3.x
    • 3.6.x to 3.7.x
Powered by GitBook
On this page

Was this helpful?

  1. Proxy Reference
  2. Request URI

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.

PreviousRequest URINextThe append_path property

Last updated 4 years ago

Was this helpful?