Mélange de pages Web Api et ASP.Net MVC dans un projet

Comment mélanger les pages Web API et ASP.Net MVC dans un projet?

Par exemple, j’ai un utilisateur modèle. Je voudrais, dans le même projet, avoir un ApiController qui réponde à tous les verbes HTTP pour gérer les entités utilisateur, et en même temps avoir un contrôleur qui renvoie les vues fortement typées appropriées en fonction de l’action demandée.

Je ne peux pas nommer les deux contrôleurs UserController. Quelle est la meilleure façon de contourner cela? Dois-je nommer un UserApiController et l’autre UserController? D’autres suggestions?

Vous pouvez les placer dans des espaces de noms distincts, par exemple MyApp.Controllers.UsersController et MyApp.Controllers.WebAPI.UsersController.

Cela vous permettrait d’exposer des routes URI similaires dans MVC et WebAPI, par exemple:

/users/1 << MVC view /api/users/1 << Web API 

L’implémentation WebApi doit être ajoutée en tant que zone séparée dans l’application MVC. C’est un ajustement naturel. Cela vous donne l’espace de noms distinct que Mike Wasson a recommandé, en plus de vous donner un moyen naturel de configurer le routage / api. Vous obtenez un dossier de modèle distinct

En outre, il est très spécifiquement séparé du rest du projet. Si les exigences futures sont telles que vous devez séparer l’implémentation de l’API en un projet distinct, l’implémentation de l’API isolée dans une zone distincte facilite grandement la tâche.

Je n’ai pas changé les espaces de noms, la seule chose que je devais faire était d’enregistrer d’abord WebApi, puis MVC

 //First register WebApi router GlobalConfiguration.Configure(WebApiConfig.Register); //and register Default MVC Route after RouteConfig.RegisterRoutes(RouteTable.Routes); 

et tout fonctionne bien!