2015-01-14 5 views
5

私たちはwebAPIを実装しており、いくつかのAPIコントローラがあります。 私たちはAPIについてのAPIドキュメントを提供しています。そのためには、特定のWebメソッドをドキュメントから除外することをお勧めしますが、実行中の環境に応じて動的にこのメソッドを実行したいと考えています。 だけの私がtrueにApiExplorerSettingAttributeにIgnoreAPIプロパティを設定することにより、以下のWebメソッドapiエクスプローラドキュメントのコントローラでWebAPIメソッドを動的に無視します

[ApiExplorerSettings(IgnoreApi = true)] 
public Product getProduct() 
{ 
    ... 
} 

を持っているとしましょう、あなたは私が何を意味するかを理解していただくことを、それは私たちであるドキュメントからのWebメソッドを除外します本当の価値を動的に設定する方法が必要です。 理想的には、webMethodごとにbool値を持つデータベーステーブルを作成し、それに基づいてIgnoreAPiプロパティの値を設定したいとします。 これを達成する方法はありますか?あなたの助けに感謝します。

+2

質問のタイトルを変更することを検討してください。あなたが質問をクリックしたのは、外部の発信者へのメソッドの可視性を扱っていると思ったからです。メソッドのドキュメンテーションに関するものではありませんでした。 – julealgon

答えて

4

カスタムIApiExplorerを実装し、どのAPIがリストされているかを完全に制御できるWeb APIのサービス。ここで

はこれのほとんどを実装DEVからブログ記事です:http://blogs.msdn.com/b/yaohuang1/archive/2012/05/13/asp-net-web-api-introducing-iapiexplorer-apiexplorer.aspx

そして、ここではIApiExplorerインターフェースの定義です:あなたができるhttp://msdn.microsoft.com/en-us/library/system.web.http.description.iapiexplorer(v=vs.118).aspx

ことの一つは、から派生する(または既存のソースを再使用しています既存のApiExplorerの実装と、baseを呼び出して既定のリストを取得してから、必要に応じてそれをさらにフィルタリングします。

そしてs_hewittさんのコメントにつき、勧告は次のとおりです。

は、二つの方法のShouldExploreActionを実装し、ShouldExploreControllerが進むべき道である、ApiExplorerから派生。これらの2つの方法でDBコールを作成し、ルート、コントローラ、アクションに基づいてルックアップします。

+0

ApiExplorerから派生し、2つのメソッドShouldExploreActionとShouldExploreControllerを実装する方法です。これらの2つの方法でDBコールを作成し、ルート、コントローラ、アクションに基づいてルックアップします。 –

+0

ありがとうAilonとs_hewitt。それが私の問題を解決しました。 – CodeExplorer

+0

@s_hewittありがとう、私はより良い可視性のためにあなたのテキストを含めるために私の答えを更新しました! – Eilon

0

WebAPIのドキュメントの生成についてはよく分かりませんが、私は属性について知っています。属性はコードにコンパイルされ、ハードコードされた値がEXEまたはDLLのデータに直接保持されます。彼らは変更することはできません。

通常のコンパイル後に、属性を2番目のセットとして適用できる可能性があります。おそらくPostSharpがお手伝いできますか?おそらく、ソリューション構成を変更することは、あなたが構築したい環境を示す方法であり、このメソッドはIgnoreApi処理を取得することができます。メソッドを無視する環境を記述するメソッドに適用する独自の属性を作成することができます。あなたがPostSharpで望んでいることは、このデータを取得するためにデータベースを呼び出そうとしないと、もっとうまくいくと思うでしょう。

関連する問題