2017-01-04 3 views
6

MVCとWebAPI2の両方を使用するWebアプリケーションがあります。手動で設定されたMVCルートを照合する前に、常にWebAPI2属性ルートとの照合を要求したいと思います。私はと呼ぶ前にconfiguration.MapHttpAttributeRoutes()と呼ぶことを試みたが、これはうまくいかない。MVAPルートの前にWebAPI2ルートが一致することを確認してください。

WebAPI2ルートが常に優先されるようにする方法はありますか。

+7

Web APIルートの規則は、ルートに "api"とバージョン "v1"の接頭辞を付けることです。これはMVCルートからそれらを分離するので、あなたはMVCとWeb APIの間で規約を共有している場合を除き、なぜ注文について気にしますか? –

答えて

0

これを実行します。 VSを使用して新しいコントローラを作成します。 someControllerという名前が付いていることを確認してください。コントローラの名前は「Controller」で終わる必要があります。あなたのクラスがApiControllerを継承していることを確認してください。

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

これをあなたのglobal.asaxファイルに追加してください。上記で

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

、APIのルートがHTTPGETを待っている、あなたはあまりにもHttpPostを使用して、投稿フォームデータを取得するためにFormDataCollectionを使用することができます。 {someparameter}でAPIをパラメータ化する方法に注意してください。

上記は非常に簡単で、APIコントローラはシリアル化を実装するほとんどのオブジェクトをシリアル化できます。そうでない場合は、NewtonSoftなどを使用できます。

関連する問題