2017-11-22 7 views
0

すべてのAPIコールを1つのコントローラにルーティングします。私はMVCを使用して私は何をしたいと思いますが、動的にエンドポイントを持っているので、基本的にどのようなURLを使用すると、ロジックを行う1つのコントローラを指します。もっと難しいのは、どのコントローラが呼び出されているかを知りたいということです。例えば、Get: "https:// {url}/project/id" "コントローラーを持っていて、どのコントローラーが呼び出されているかを知るために、"プロジェクト "をパラメーター(またはどのエンドポイントが使用されたかを示すことができるもの)として持っています。1つのコントローラにC#MVCダイナミックコントローラ

これはAPIを設定するうえで便利な方法ではないことがわかりましたが、現在のところ、これは当社のニーズに最も合っているようです。

[編集] 私はMVCコントローラとApiControllerを混ぜていたので、iveが私の質問を混乱させるのを見ました。私はこのスレッドで答えを使用して終了:Route all Web API requests to one controller method

+0

ルーティングフレームワークは、現在、あなたのためにそれをやっています。なぜそれをカスタマイズしたいのですか?あなたは何をしようとしているのですか。あなたの問題を解決する別の方法があるかもしれません。 – Shyju

+0

[RouteBase'](https://stackoverflow.com/a/31958586/)のサブクラスを使用すると、文字通りルートをプログラミングして必要な処理を行うことができます。 [RouteData.DataTokens](https://msdn.microsoft.com/en-us/library/system.web.routing.routedata.datatokens(v = vs.110).aspx)を使用して、ルートは現在、アプリケーションの残りの部分と一致しています。 – NightOwl888

+0

@Shyju問題は、残りのAPIを配信できるようにしたいが、すべてのビジネスロジックがデータベースに格納されていても、エンドポイントが使用可能であってもデータベースに格納され、変更できるため、残りのAPIが動的である必要がある私はURLをキャッチし、適切なデータベースを呼び出すことができるような方法で。 NightOwl888は、私が欲しいものをするのに十分面白くてダイナミックに見えます。 – Blaataap

答えて

0

Asp.Net MVCでのことができますルート例えばこの

ので
routes.MapRoute("NotFound", 
       "{*url}", 
       new { controller = "Error", action = "PageNotFound" }); 

のようなカスタムエラーページに少しはそれが

routes.MapRoute("AllRequests", 
       "{*url}", 
       new { controller = "Dynamic", action = "Dynamic" }); 
のように見える名前の変更で

それはあなたが望むものですか?

+0

それは私が欲しいものですが、代わりに私はそれが欲しいです: routes.MapRoute( "AllRequests"、 "{*コントローラ*}/{アクション}/{id}"、 new {controller = "動的 "、アクション="インデックス "}); {* controller *}はURL内の何でもかまいませんが、常に同じコントローラを指します。私のコントローラでは、{* controller *}として何が使用されているか知りたいです。 – Blaataap

+0

そして、私の命題で何を得られなかったのですか?その後、HttpContextによってDynamicController内のRequest(またはURI)が取得されます。 – less

+0

アクションは無視されているので、常にデフォルトのアクションi set(この場合はIndex)を使用します。アクションは正常に動作するはずですので、/ controller/Details/5は正しい方法を起動する必要があります – Blaataap

関連する問題