Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between MVC 5 Project and Web Api Project

People also ask

What is the difference between Web API and MVC?

The Web API returns the data in various formats, such as JSON, XML and other format based on the accept header of the request. But the MVC returns the data in the JSON format by using JSONResult. The Web API supports content negotiation, self hosting. All these are not supported by the MVC.

How do I know if my project is Web API or MVC?

See the base class of controller in web project if it is inheriting from ApiController it is web api else MVC if inheriting from Controller class. Or you can create MVC and Web api projects using visual studio and see which one matches your solution. Show activity on this post.

What is the difference between MVC and REST API?

MVC is about how the inner side of your app works. REST is about how your app "talks" with other apps. You can combine them. MVC is a design pattern for creating a separation of concerns and avoiding tightly coupled data, business, and presentation logic.

Can I use MVC as Web API?

Mvc Hence Web API can also be used with Asp.Net and as a stand-alone service layer. You can mix Web API and MVC controller in a single project to handle advanced AJAX requests which may return data in JSON, XML or any others format and building a full-blown HTTP service.


Basically, a Web API controller is an MVC controller, which uses HttpMessageResponse as the base type of its response, instead of ActionResponse. They are the same in most other respects. The main difference between the project types is that the MVC Application project type adds web specific things like default CSS, JavaScript files and other resources needed for a web site, which are not needed for an API.

MVC is used for creating web sites. In this case Controllers usually return a View (i.e. HTML response) to browser requests. Web APIs on the other hand are usually made to be consumed by other applications. If you want to allow other applications to access your data / functionality, you can create a Web API to facilitate this access. For example, Facebook has an API in order to allow App developers to access information about users using the App. Web APIs don't have to be for public consumption. You can also create an API to support your own applications. For example, we created a Web API to support the AJAX functionality of our MVC web site.

Microsoft changed the way they present the different templates. Now instead of using different templates for different project types, they encourage developers to mix ASP.NET technologies inside the same project as needed. Microsoft calls this vNext.

UPDATE: For ASP.NET Core, Web API has been integrated into the MVC 6 project type and the ApiController class is consolidated into the Controller class. Further details at: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


My two cents...

  1. In ASP.Net MVC – the MVC’s Controller decides what should be the View - i.e., the controller decides what the user should “see” (based on the current scenario or context), when they make a request.
  2. In ASP.Net Web Forms, the ASPX pages decides what the user should “see” when they make a request.
  3. But in Web API, there is no control/power to any of the Web API’s features to decide what the user should “see” when they make a request.

Web API is NOT a technology tied up with websites only. It can be used for multiple purposes – not only websites. So it doesn't know the meaning of rendering

Further Reading

  1. Planning Web Solutions Today: Web Forms, ASP.NET MVC, Web API, and OWIN.
  2. WCF or ASP.NET Web APIs? My two cents on the subject
  3. The Next Generation of .NET – ASP.NET vNext
  4. Getting Started with ASP.NET MVC 6