Je suis nouveau sur ASP.NET MVC et Web API et essayer d’obtenir les bases. AFAIK, nous avons des modèles de projet dans VS 2013, nommés MVC
, Web API
et les Both of them together
.
J’ai parcouru les didacticiels et j’ai appris que nous pouvions créer une API en utilisant MVC seul et avec Web API Template.
Alors, quelles sont les différences entre celles-ci, basées sur l’ architecture et l’ utilisation ?
Fondamentalement, un contrôleur d’ Web API
est un contrôleur MVC
, qui utilise HttpMessageResponse
comme type de base de sa réponse, au lieu d’ ActionResponse
. Ils sont les mêmes dans la plupart des autres domaines. La principale différence entre les types de projet est que le type de projet MVC Application
ajoute des éléments spécifiques au Web, tels que JavaScript
fichiers CSS
et JavaScript
par défaut et les autres ressources nécessaires à un site Web, qui ne sont pas nécessaires pour une API.
MVC est utilisé pour créer des sites Web. Dans ce cas, les Controllers
renvoient généralement une View
(à savoir une réponse HTML) aux requêtes du navigateur. En revanche, les API Web sont généralement conçues pour être consommées par d’autres applications. Si vous souhaitez autoriser d’autres applications à accéder à vos données / fonctionnalités, vous pouvez créer une API Web pour faciliter cet access. Par exemple, Facebook dispose d’une API afin de permettre aux développeurs d’applications d’accéder aux informations sur les utilisateurs utilisant l’application. Les API Web ne doivent pas nécessairement être destinées à la consommation publique. Vous pouvez également créer une API pour prendre en charge vos propres applications. Par exemple, nous avons créé une API Web pour prendre en charge les fonctionnalités AJAX de notre site Web MVC.
Microsoft a changé la façon dont ils présentent les différents modèles. Maintenant, au lieu d’utiliser différents modèles pour différents types de projets, ils encouragent les développeurs à combiner les technologies ASP.NET au sein du même projet en fonction des besoins. Microsoft appelle cette vNext
.
MISE À JOUR: Pour ASP.NET Core, l’API Web a été intégrée au type de projet MVC 6 et la classe ApiController
est consolidée dans la classe Controller
. Plus de détails sur: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6
Mes deux centimes…
Controller
du MVC décide quelle doit être la View
– c.-à-d. Que le contrôleur décide de ce que l’utilisateur doit «voir» (en fonction du scénario ou du contexte actuel), lorsqu’il émet une demande. ASPX
déterminent ce que l’utilisateur doit «voir» lorsqu’elles font une demande. L’API Web n’est PAS une technologie liée à des sites Web uniquement. Il peut être utilisé à des fins multiples – pas seulement sur des sites Web. Donc, il ne connaît pas le sens du rendering
Lectures complémentaires
Contrôleur MVC dérivé de la classe de contrôleur. Dans Mvc, vous pouvez retourner des vues. Mvc achitecture utilise pour créer une application. Cependant, Web apis est utilisé pour fournir des données à diverses applications.
Web Api pilote depuis le contrôleur Api et ne renvoie pas de vue.
Remarque: Vous pouvez également créer Web Api à partir du contrôleur MVC, mais vous devez retourner le résultat sous JsonResult ou d’autres types de retour pris en charge par Web Api.
Outre les réponses déjà fournies, il convient de noter que tout contrôleur héritant d’ApiController et ayant une action avec le verbe HTTP POST ne peut avoir qu’un seul paramètre d’entrée [FromBody]. Si vous utilisez un contrôleur MVC (dérivant de ‘Controller’), vous pouvez avoir de nombreux parameters de post-entrée.