2017-01-04 5 views
6

Ich habe eine Webanwendung, die MVC und WebAPI2 verwendet. Ich möchte, dass Anfragen immer mit Attributen von WebAPI2-Attributen abgeglichen werden, bevor manuell konfigurierte MVC-Routen abgeglichen werden. Ich habe versucht, configuration.MapHttpAttributeRoutes() zu rufen, bevor ich RouteConfig.RegisterRoutes(RouteTable.Routes) anrufen, aber das scheint nicht zu funktionieren.Stellen Sie sicher, dass WebAPI2-Routen vor MVC-Routen übereinstimmen.

Gibt es eine Möglichkeit sicherzustellen, dass die WebAPI2-Routen immer Vorrang haben?

+7

Die Konvention für Web-API-Routen besteht darin, der Route "api" und sogar eine Version "v1" voran zu stellen. Dadurch werden sie von den MVC-Routen getrennt. Warum interessieren Sie sich für die Reihenfolge, es sei denn, Sie teilen eine Vereinbarung zwischen MVC und Web-API? –

Antwort

0

Probieren Sie es aus. Verwenden Sie VS, um einen neuen Controller zu erstellen. Achten Sie darauf, dass es sich um someController handelt, wobei einige der Name Ihres Controllers sind, er muss in "Controller" enden. Seien Sie sicher, dass Ihre Klasse erbt ApiController ...

public class someController : ApiController 
    { 
     [Route("api/test/{name}"), HttpGet] 
     public string Router(string name) 
     { 
      return "Your name is: " + name; 
     }   
    } 

Auch diese Datei in Ihrem global.asax hinzufügen.

protected void Application_Start(object sender, EventArgs e) 
    { 
     GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //This will remove XML serialization and return everything in JSON. 

     GlobalConfiguration.Configuration.MapHttpAttributeRoutes(); 
     GlobalConfiguration.Configuration.EnsureInitialized(); 
    } 

In oben wird die api Route für HttpGet warten, können Sie Httppost verwenden, und verwenden Sie FormDataCollection Formulareingaben zu erhalten. Beachten Sie, wie Sie Ihre APIs mit {someparameter} parametrisieren können

Das oben genannte ist ziemlich einfach, und der API-Controller kann die meisten Objekte serialisieren, die Serialisierung implementieren. Wenn nicht kann NewtonSoft oder etwas verwenden.

Verwandte Themen