362 votes

Comment ajouter des API Web à un projet d’Application Web ASP.NET MVC 4 existant ?

Je voudrais ajouter une API Web ASP.NET à un projet d’Application Web ASP.NET MVC 4, développé en Visual Studio 2012. Quelles étapes je dois effectuer pour ajouter une API Web fonctionnant au projet ? Je suis conscient que j’ai besoin d’un contrôleur dérivant de ApiController, mais c’est tout autant que je sache.

Laissez-moi savoir si j’ai besoin de fournir plus de détails.

447voto

aknuds1 Points 9918

Les étapes que j'ai besoin sont:

  1. Ajouter une référence à l' System.Web.Http.WebHost.
  2. Ajouter App_Start\WebApiConfig.cs (voir l'extrait de code ci-dessous).
  3. Import namespace System.Web.Http en Global.asax.cs.
  4. Appelez WebApiConfig.Register(GlobalConfiguration.Configuration) en MvcApplication.Application_Start() (dans le fichier Global.asax.cs), avant l'enregistrement de l'Application Web par défaut en tant qu'itinéraire qui aurait pu avoir la priorité.
  5. Ajouter un contrôleur découlant de l' System.Web.Http.ApiController.

J'ai pu apprendre assez de le tutoriel (Votre Premier ASP.NET Web API) pour définir mon API contrôleur.

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 });
    }
}

Mondiale.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);
}

76voto

CDeutsch Points 1643

Mise à jour 22/11/2013 - c’est le dernier paquet WebApi :

Réponse originale (il s’agit d’un paquet de WebApi plus âgé)

Plus de détails : http://wildermuth.com/2012/2/22/WebAPI_for_the_MVC_Guy

27voto

Teoman shipahi Points 7988

Dès que vous ajoutez un "WebApi Contrôleur" sous les contrôleurs de dossier, Visual Studio prend en charge automatiquement les dépendances;

Visual Studio a ajouté l'ensemble des dépendances pour ASP.NET Web API de 2 à projet "MyTestProject'.

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

  1. Ajouter l'espace de noms suivant les références:

    en utilisant le Système.Web.Http; en utilisant le Système.Web.De routage;

  2. Si le code n'est pas déjà définir une méthode Application_Start, ajoutez la méthode suivante:

    protected void Application_Start() { }

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

    GlobalConfiguration.Configurer(WebApiConfig.Registre);

22voto

Cuong Le Points 29324

Quelle création d’Application Web ASP.NET MVC 4 projet, même vide, le package `` est ajouté par défaut.

Alors pour la première étape de bébé, il suffit de créer un test contrôleur api qui hérite de de l’espace de noms et puis apprendre tutoriel à suivre.

20voto

OptikLab Points 93

Avant de commencer la fusion MVC et Web API projets je suggère de lire sur les inconvénients et les avantages de séparer ces différents projets. Une chose très importante (le mien) est d'authentification des systèmes, ce qui est totalement différent.

SI vous avez besoin d'utiliser les requêtes authentifiées sur les deux MVC et Web API, vous devez vous rappeler que le Web API RESTful (n'avez pas besoin de garder de la session, de simples requêtes HTTP, etc.), mais MVC n'est pas.

Pour chercher des différences entre les implémentations suffit de créer 2 différents projets dans Visual Studio 2013 à partir de Modèles: l'un pour le MVC et un pour les API Web (n'oubliez pas d'activer l'Authentification Individuelle" lors de la création). Vous verrez une grande différence dans AuthencationControllers.

Donc, être conscient.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X