Request HTTP method

Client requests can also be routed depending on their HTTP method by specifying the methods field. By default, Janus will route a request to an API regardless of its HTTP method. But when this field is set, only requests with the specified HTTP methods will be matched.

This field also accepts multiple values. Here is an example of an API allowing routing via GET and HEAD HTTP methods:

{
    "name": "My API",
    "proxy": {
        "strip_path" : true,
        "listen_path": "/hello/*",
        "upstreams" : {
            "balancing": "roundrobin",
            "targets": [
                {"target": "http://my-api.com"}
            ]
        },
        "methods": ["GET", "HEAD"]
    }
}

Such an API would be matched with the following requests:

GET / HTTP/1.1
Host:
HEAD /resource HTTP/1.1
Host:

But would not match a POST or DELETE request. This allows for much more granularity when configuring APIs and Middlewares. For example, one could imagine two APIs pointing to the same upstream service: one API allowing unlimited unauthenticated GET requests, and a second API allowing only authenticated and rate-limited POST requests (by applying the authentication and rate limiting plugins to such requests).