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).