Comment append une API Web à un projet d’application Web ASP.NET MVC 4 existant?

Je souhaite append une API Web ASP.NET à un projet d’application Web ASP.NET MVC 4, développé dans Visual Studio 2012. Quelles étapes dois-je effectuer pour append une API Web fonctionnelle au projet? Je suis conscient que j’ai besoin d’un contrôleur dérivé d’ApiController, mais c’est à peu près tout ce que je sais.

Faites-moi savoir si je dois fournir plus de détails.

Les étapes à effectuer étaient les suivantes:

  1. Ajoutez une référence à System.Web.Http.WebHost .
  2. Ajoutez App_Start\WebApiConfig.cs (voir l’extrait de code ci-dessous).
  3. Importez l’espace de noms System.Web.Http dans Global.asax.cs .
  4. Appelez WebApiConfig.Register(GlobalConfiguration.Configuration) dans MvcApplication.Application_Start() (dans le fichier Global.asax.cs ) avant d’ enregistrer la route d’application Web par défaut, car cela aurait la priorité.
  5. Ajoutez un contrôleur dérivant de System.Web.Http.ApiController .

Je pourrais alors apprendre suffisamment du tutoriel (Votre première API Web ASP.NET) pour définir mon contrôleur API.

App_Start \ WebApiConfig.cs:

 using System.Web.Http; class WebApiConfig { public static void Register(HttpConfiguration configuration) { configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional }); } } 

Global.asax.cs:

 using System.Web.Http; ... protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); WebApiConfig.Register(GlobalConfiguration.Configuration); RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } 

Mise à jour 16.10.2015:

Word l’a, le package NuGet Microsoft.AspNet.WebApi doit être installé pour que ce qui précède fonctionne.

MISE À JOUR 22/11/2013 – Ceci est le dernier package WebApi:

 Install-Package Microsoft.AspNet.WebApi 

Réponse originale (il s’agit d’un ancien package WebApi)

 Install-Package AspNetWebApi 

Plus de détails

Pour append WebAPI dans mon projet MVC 5.

  1. Ouvrez le gestionnaire de package NuGet et lancez-le

     PM> Install-Package Microsoft.AspNet.WebApi 
  2. Ajouter des références à System.Web.Routing, System.Web.Net et System.Net.Http dlls s’il n’y en a pas déjà

  3. Clic droit sur le dossier des contrôleurs> append un nouvel élément> Web> Ajouter un contrôleur d’API Web

  4. Web.config sera modifié en conséquence par VS

  5. Ajouter la méthode Application_Start () {} s’il n’y en a pas déjà

     protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); } 
  6. Ajoutez la classe suivante (j’ai ajouté dans le fichier global.asax.cs)

     public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAtsortingbuteRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } 
  7. Modifier la méthode web api en conséquence

     namespace  { public class VSController : ApiController { // GET api/ : url to use => api/vs public ssortingng Get() { return "Hi from web api controller"; } // GET api//5 : url to use => api/vs/5 public ssortingng Get(int id) { return (id + 1).ToSsortingng(); } } } 
  8. Reconstruire et tester

  9. Construire une page HTML simple

            ....   

Dès que vous ajoutez un “Contrôleur WebApi” dans le dossier des contrôleurs, Visual Studio prend automatiquement en charge les dépendances;

Visual Studio a ajouté l’ensemble complet de dépendances pour ASP.NET Web API 2 au projet ‘MyTestProject’.

Le fichier Global.asax.cs du projet peut nécessiter des modifications supplémentaires pour activer l’API Web ASP.NET.

  1. Ajoutez les références d’espace de noms suivantes:

    en utilisant System.Web.Http; en utilisant System.Web.Routing;

  2. Si le code ne définit pas déjà une méthode Application_Start, ajoutez la méthode suivante:

    Protégé void Application_Start () {}

  3. Ajoutez les lignes suivantes au début de la méthode Application_Start:

    GlobalConfiguration.Configure (WebApiConfig.Register);

Vous pouvez installer depuis nuget l’image ci-dessous:

entrer la description de l'image ici

Ou, exécutez la ligne de commande ci-dessous sur la console Gestionnaire de packages:

 Install-Package Microsoft.AspNet.WebApi 

Avant de commencer à fusionner des projets MVC et Web API, je suggère de lire les cons parmi et les pros pour les séparer en tant que projets différents. Une chose très importante (la mienne) concerne les systèmes d’authentification, qui sont totalement différents.

Si vous devez utiliser des requêtes authentifiées sur MVC et Web API, vous devez vous rappeler que Web API est RESTful (inutile de conserver la session, de simples requêtes HTTP, etc.), mais ce n’est pas le cas de MVC.

Pour examiner les différences d’implémentation, créez simplement 2 projets différents dans Visual Studio 2013 à partir de modèles: un pour MVC et un pour Web API (n’oubliez pas d’activer “Authentification individuelle” lors de la création). Vous verrez beaucoup de différence dans AuthencationControllers.

Alors, soyez conscient.

La solution ci-dessus fonctionne parfaitement. Je préfère choisir l’option API Web en sélectionnant le modèle de projet, comme illustré ci-dessous

Remarque: la solution fonctionne avec Visual Studio 2013 ou version ultérieure. La question initiale a été posée en 2012 et c’est 2016, ajoutant ainsi une solution Visual Studio 2013 ou supérieure.

Modèle de projet montrant l'option de l'API Web