I'm handling a couple of URLs:
mux.Handle("GET", "/api/{organization}/groups", ...)
mux.Handle("GET", "/api/{organization}/groups/{group}/hosts", ...)
Given this set of handlers:
GET @ /api/12345/foo - Returns 404, as I'd expect
...but...
GET @ /api/12345/groups/ - Returns 405.
GET @ /api/12345/groups/foo - Also returns 405.
Both 405 responses come back claiming:
{
"description": "only OPTIONS are allowed",
"error": "tigertonic.MethodNotAllowed"
}
There seems to be some weird behavior if it's trying to match URLs and the last segment of the requested URL matches a parameter portion of any other URL, even if there's no way the URL could match, as in /api/12345/groups/foo. It also doesn't seem to be checking for empty parameter values in cases like this, causing /api/12345/groups to work as expected but /api/12345/groups/ to fail with 405.
Also, if I add another handler:
mux.Handle("GET", "/api/{organization}/groups/{group}", ...)
...then requests to /api/12345/groups/ do get routed to this new handler, but it gets an empty "group" value.