50

1 つのプロジェクトで Web API と ASP.Net MVC ページを混在させるにはどうすればよいですか?

たとえば、モデル User があります。同じプロジェクト内で、User エンティティを管理するためのすべての HTTP 動詞に応答する ApiController を持ち、同時に要求された Action に応じて適切な厳密に型指定されたビューを返す Controller を持ちたいと思います。

両方のコントローラーに UserController という名前を付けることはできません。これを回避する最善の方法は何ですか? 1 つの UserApiController ともう 1 つの UserController に名前を付ける必要がありますか? 他の提案はありますか?

4

3 に答える 3

51

MyApp.Controllers.UsersController と MyApp.Controllers.WebAPI.UsersController など、別々の名前空間に配置できます。

これにより、MVC と WebAPI で同様の URI ルートを公開できます。たとえば、次のようになります。

/users/1      << MVC view
/api/users/1  << Web API
于 2012-05-21T00:35:43.297 に答える
16

名前空間は変更していません。最初に WebApi を登録してから MVC ルートを登録するだけで済みました。

//First register WebApi router
GlobalConfiguration.Configure(WebApiConfig.Register);
//and register Default MVC Route after
RouteConfig.RegisterRoutes(RouteTable.Routes);

そしてすべてがうまくいきます!

于 2016-02-19T17:17:47.900 に答える
10

WebApi の実装は、MVC アプリケーションの別の領域として追加する必要があります。自然なフィット感です。これを行うと、Mike Wasson が推奨する別の名前空間が得られ、さらに /api ルーティングを設定する自然な方法が得られます。別のモデル フォルダーを取得します。

さらに、プロジェクトの残りの部分から非常に明確に分離されています。将来、API 実装を別のプロジェクトに分離する必要があるような要件が生じた場合、API 実装を別の領域に分離することで、分割がはるかに簡単になります。

于 2013-07-09T16:02:25.107 に答える