title: How does the ApiController class work and behave?
body: <p>I studied how to use APIs in a MVC project but I have some doubts about. (I'm writing in C# language before anyone asks).  </p>
  
  <p>So far, I know that the Api's route configuration is set in the <code>WebApiConfig</code> class and by default the route is:  </p>
  
  <pre><code>routeTemplate: "api/{controller}/{id}"
  </code></pre>
  
  <p>By doing this, when I compile a jSon request I know what URI I have to call in order to obtain a specific result.<br>
  But I'd like to be more specific so I modified the Api's route to:</p>
  
  <pre><code>routeTemplate: "api/{controller}/{action}/{id}"
  </code></pre>
  
  <p>With this route I will be able to build an URI directly to a specific action (method?) inside my ApiController.  </p>
  
  <p>Also I learned that the <code>/{controller}/</code>, while building the URI with jSon, is the name of the class. That is, if the class is <code>ProductsController</code> the controller name that I have to use to build the URI is just <code>/products</code>. (So the whole URL will be <code>/api/products</code>).  </p>
  
  <p>Here questions are:<br>
  <strong>If I have an ApiController class named just <code>Products</code>, is it recognizable as part of an URI? Or the ApiController class have to end with "Controller"?</strong><br>
  By following a tutorial I put my ApiController il the same folder as other Controllers. I know that is possible to put Apis into different folders. So, <strong>is every single API automatically recognized by MVC?</strong> I mean, <strong>wherever I save them, are they recognized as API?</strong><br>
  If so, <strong>could I eventually call an API located in a different project than the one I'm working on?</strong><br>
  <strong>Can I create a single project (as class library) with a collection of APIs?</strong><br>
  <strong>Does the route configuration change if I want to call an API in a distinct project?</strong>  </p>