Les contrôleurs d'API Web peuvent être créés et hébergés dans n'importe quelle application ASP.NET, et pas seulement dans les applications MVC. Ainsi, une raison évidente de créer une API Web est si vous ne disposez pas d'un front-end MVC (par exemple, des services Web classiques, RESTful, hébergés par votre entreprise/organisation).
Les contrôleurs MVC s'appuient généralement sur le cadre MVC. Si vous regardez les modèles par défaut et la plupart des travaux réalisés par la communauté et vos pairs, vous remarquerez que presque tous les contrôleurs MVC sont mis en œuvre en tenant compte de la vue.
Personnellement, j'utilise des contrôleurs MVC lorsque j'ai l'intention de répondre avec une vue(), et j'utilise une API Web pour tout ce qui ne dépend pas d'une vue particulière.
Il y a bien sûr des réserves, mais de manière générale, si vous n'avez pas besoin du comportement de Model Binding de MVC, si votre service est centré sur les données et si les opérations sont centrées sur les données (par exemple, les opérations CRUD), vous aurez probablement besoin d'un "Web API Controller" plutôt que d'un "Model-View Controller". Inversement, si vos opérations sont centrées sur la vue (par exemple, fournir une page d'administration à l'utilisateur), ou si vous avez besoin de la liaison de modèle de MVC pour générer des "partiels ajax" (très peu probable), alors vous voudrez plutôt un contrôleur MVC.
Personnellement, j'utilise des contrôleurs Web API pour piloter les clients RESTful basés sur JSON, j'utilise des contrôleurs MVC pour gérer le routage de base du navigateur et la livraison de la SPA.
0 votes
Duplicata possible de Différence entre ApiController et Controller dans ASP.NET MVC
1 votes
Il est important de noter que cette question est spécifique à un certain contexte : l'auteur veut savoir quel contrôleur utiliser si SEULEMENT json doit être retourné. Une API REST autorise différents formats de médias en fonction de la négociation du contenu (par exemple : accepter xml, accepter json). Dans ce cas, le contrôleur WebAPI est votre meilleure option.