I'm trying to build a REST API with ASP mvc and i'm having some trouble with the routing.
I would like to match the following urls in a nice and convenient way:
https://foo.com/collections/
https://foo.com/collections.json/
https://foo.com/collections.xml/
https://foo.com/collections/collectionID/
https://foo.com/collections/collectionID.json/
https://foo.com/collections/collectionID.xml/
And in future more items on the same pattern:
https://foo.com/persons/
https://foo.com/persons.json/
https://foo.com/persons.xml/
https://foo.com/persons/personID/
https://foo.com/persons/personID.json/
https://foo.com/persons/personID.xml/
My best attempt so far is:
routes.MapRoute(
name: "RESTCollections",
url: "{controller}s/",
defaults: new { controller = "Collection", action = "Index" }
);
routes.MapRoute(
name: "RESTCollections",
url: "{controller}s/{format}/",
defaults: new { controller="Collection", action="Index", format = UrlParameter.Optional },
constraints: new { format = "json|xml|html" }
);
It manages to match:
https://foo.com/collections/
https://foo.com/collections/json
But I'm stuck there trying to replace the "/" between the controller and format gives 404. Simply removing the "/" also gives 404.