I've just started to use the VS 2012 RC, and I'm creating an ASP.NET MVC 4 web application in which I plan to provide both an HTML-based user interface and a WebApi-based programming interface.
For my HTML website, I have a controller and view for each of my models (MVC!), and the routing works "by convention" so that, for example, the URL /client
hooks up to my ClientController
. My ClientController
derives from Controller
.
For my API, I will create new controllers that derive from ApiController
. I naturally want my API URLs to be similar to my HTML URLs, so I'd like the client info to be available at /api/client
. However, with the by-convention routing, that would suggest that I need an ApiController named ClientController
. And I already have a ClientController
class.
How do I deal with this? Do I need custom routing? Do I put the API classes in different namespace so that I can give them the same name?
Update: this question seems to suggest that a different namespace for my API controllers is all I need: Mix web api controllers and site controllers
All it requires is for the controller classes to be in a different namespace, and all is well.
Using MVC areas would also work (as suggested in gordonml's comment), but this effectively puts the controllers in different namespaces, so it's a more formal way of achieving the same result.