1

2つのWeb Api 2記事を読んだ後で、ビューとバックエンドの間で多くのJSONデータが送信されるため、現在のプロジェクトで使用することにしましたサービス。私はそれを複数のアプリケーションにしています。MVC 5ルーティングとWeb Apiの組み合わせ2

私が理解できないのは、MVCからのルーティングを維持し、これをWeb API 2と組み合わせてデータ通信を処理する方法です。コントローラを使用してルーティングし、ビューとデータを扱うWEBAPIプロジェクトを返すに扱うMVCプロジェクト:

  1. は2つの別々のプロジェクトの作成:ここでは私の心を交差させたオプションのカップルです。 (どのように両方にアクセスできますか)

  2. すべてのAPIを使用してMVCプロジェクトとサブマップを作成します。 (懸念の分離についてはどうすればよいですか?)

  3. webapiプロジェクトを作成し、MVCコントローラのどこにルーティングするのに使用されるエリア機能を使用します。

  4. 結論として、マルチページアプリケーション用のデータ通信をハンドリングするMVCコントローラを使用することをお勧めします。

例の溶液構造:

Project.Core 
Project.Services 
Project.Data 
Project... 
+0

あなたはその記事http://www.codeproject.com/Articles/892301/Server-side-Data-Filtering-Sorting-and-Paging-withを見なければなりません。あなたが必要とするものとまったく関係がありません。しかし、私はあなたがその記事のすべてを見つけることができると思う。プロジェクトをダウンロードして調査するだけです。 –

+0

ありがとうございますが、ルーティングがAngularで行われているSPAのようですが、ルーティング機能がMVCコントローラによって処理され、Web APIのみとのデータ通信が行われるマルチページアプリケーションを作成しようとしています。 – Sam

答えて

2

WebAPI2ルーティングはMVCルーティングから分離されています。 API 2ルーティングの美しさは、コントローラーとアクション名とは完全に独立して、必要なものを自由に作成できることです。私は私のメソッド名GetTriggerが私のルート と同じではありませんだけでコントローラー

  • ApiControllerを延長していないよ

    1. :注目すべき

      public class TriggerApiController : ApiController 
      { 
          private readonly ITriggerApiService _triggerApiService; 
      
          public TriggerApiController(ITriggerApiService triggerApiService) 
          { 
           _triggerApiService = triggerApiService; 
          } 
      
          [HttpGet] 
          [Route("api/v1/trigger/{externalID}")] 
          public async Task<IHttpActionResult> GetTrigger(Guid externalID) 
          { 
           var triggerApiModel = await _triggerApiService.GetAsync(externalID); 
      
           if (triggerApiModel != null) 
           { 
            return Ok(triggerApiModel); 
           } 
      
           return NotFound(); 
          } 
      } 
      

      重要なもの:以下の例を見てみましょう

    あなたのユースケースでは、私は単一のWebプロジェクトを使用しますが、すべてのAPIを独自のコントローラに配置します。 piController)、各APIのルートを指定します。

  • 関連する問題