wake-up-neo.com

Hinzufügen einer Web-API zu einem vorhandenen ASP.NET MVC (5) -Webanwendungsprojekt

Angenommen, Sie haben beim Erstellen eines neuen MVC (5) -Projekts vergessen, das Kontrollkästchen für die Web-API zu aktivieren (zum Projekt hinzufügen). Was müssen Sie tun, um die Web-API hinzuzufügen und funktionsfähig zu machen?

Es gibt eine Reihe von Migrationsfragen, aber keine enthielt anscheinend die vollständigen und aktuellen Schritte zum Hinzufügen der Web-API zu einem MVC 5-Projekt, und es hat sich anscheinend einiges geändert alte Antworten

Web-API zu MVC 4 hinzufügen

Hinzufügen von GlobalConfiguration.Configure (WebApiConfig.Register) MVC 4

140
lko

Aktualisieren Sie das MVC-Projekt

Verwenden Sie Nuget , um die neueste Web-API abzurufen.

Projekt - Klicken Sie mit der rechten Maustaste auf "Nuget-Pakete verwalten". Suchen Sie nach der Web-API (Microsoft ASP.NET-Web-API ...) und installieren Sie sie in Ihrem MVC-Projekt.

Dann müssen Sie noch das Web-API-Routing zum Laufen bringen. Von Microsoft Configuring ASP.NET Web API 2

Fügen Sie WebApiConfig.cs zum Ordner App_Start/hinzu

using System.Web.Http;

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

        // WebAPI when dealing with JSON & JavaScript!
        // Setup json serialization to serialize classes to camel (std. Json format)
        var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        formatter.SerializerSettings.ContractResolver =
            new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
        }
    }
}

Wenn Sie ein MVC-Projekt mit Global.asax.cs haben, fügen Sie die neuen Routen hinzu. Die Reihenfolge der Global.asax.cs-Routen ist kritisch. Beachten Sie, dass es veraltete Beispiele gibt, die WebApiConfig.Register Verwenden.

Diese Zeile zu Global.asax.cs hinzufügen:GlobalConfiguration.Configure(WebApiConfig.Register);

protected void Application_Start()
{
    // Default stuff
    AreaRegistration.RegisterAllAreas();

    // Manually installed WebAPI 2.2 after making an MVC project.
    GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way
    //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED

    // Default stuff
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

WebAPI-Hilfe

Um die ( sehr ) hilfreiche WebAPI-Hilfeseiten zu erhalten, installieren Sie WebAPI.HelpPage. Weitere Informationen finden Sie unter http://channel9.msdn.com/Events/Build/2014/3-644 (~ 42 Minuten in). Es sieht sehr hilfreich aus!

Nuget Console: Install-Package Microsoft.AspNet.WebApi.HelpPage

So überprüfen Sie, ob WebAPI funktioniert:

Zum Controller-Ordner -> Neues Element hinzufügen -> Web-API-Controller-Klasse.

public class TestController : ApiController
{
    //public TestController() { }

    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }
    //...
}

Jetzt können Sie wie gewohnt in IE/FF/Chrome oder in den JavaScript-Konsolen testen, um keine Tests durchzuführen.

(Mit nur dem Controller in der URL wird die GET () - Aktion im neuen Web-API-Controller aufgerufen. Sie wird automatisch Methoden/Aktionen zugeordnet, abhängig von REST z. B. PUT/POST/GET/LÖSCHEN. Sie müssen sie nicht wie in MVC durch eine Aktion aufrufen.) Die URL direkt:

http://localhost:PORT/api/CONTROLLERNAME/

Alternativ können Sie jQuery verwenden, um den Controller abzufragen. Führen Sie das Projekt aus, öffnen Sie die Konsole (F12 im IE) und führen Sie eine Ajax-Abfrage aus. (Überprüfen Sie Ihren PORT & CONTROLLERNAME)

$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
    //$( ".result" ).html( data );
    alert( "Get data received:" + data);
});

Randnotiz: Bei der Kombination von MVC und Web-API in einem Projekt sind einige Vor- und Nachteile zu beachten.

Überprüfung der WebAPI-Hilfe: http://localhost:PORT/help

243
lko