1

ASP.Net Web APIヘルプページをプロジェクトの1つに接続しましたが、XMLドキュメントファイルから読み取られる情報の範囲を拡張したいと考えています。

具体的には、ほとんどのエンドポイントはリソースを返します。このリソースには、そのリソースのデータに加えて、他のリソースやエンドポイントにリンクするためのプロパティを<Link>持ついくつかの要素も含まれています。XMLドキュメントを拡張して、各リソースに含まれる可能性のあるものに関するドキュメントを含めました。relurirel

/// <summary>
/// Retrieves the X Resource
/// </summary>
/// <returns>An X</returns>
/// <resources>
/// <resource rel="self">Self reference</resource>
/// <resource rel="related-item1">Description of related item 1</resource>
/// </resources>

これはすべてXMLドキュメントファイルに入ります。ただし、IDocumentationProvider定義されているメソッドは2つだけです。1つはメソッドの「ドキュメント」を返す(としてstring)、もう1つはパラメーターのドキュメントを返す(同上)。そして、現在XMLドキュメントを検索しているのは、このインターフェイスの実装です。

実際のドキュメントと一緒に、このドキュメント文字列に追加のXML情報を詰め込むこともできますが、それはやや醜い感じがしますこのより構造化されたデータを取得し、それを使用して適切に拡張されたデータを設定するために、新しいメソッドでインターフェイスを拡張したいと思いますHelpPageApiModel。しかし、私はこれについてどのように最善を尽くすのかわかりません。

助言がありますか?

4

1 に答える 1

2

Areas \ HelpPage \ HelpPageConfigurationExtension.csにインストールされているファイルには、アクションのアクション記述子を取得し、必要に応じてドキュメントをカスタマイズして、「拡張」HelpPageApiModelにデータを入力できる、次のメソッドがあります。 HelpPageApiModel.cshtmlを変更して、「拡張」HelpPageApiModelプロパティがある場合はそれを取得する必要があります。

private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription、HelpPageSampleGenerator sampleGenerator)

HelpPageApiModelは最初の呼び出しの後にキャッシュされるため、このメソッドでカスタマイズを行う方が適切です。したがって、上記の方法でカスタマイズを行うと、このキャッシュエクスペリエンスが自動的に得られます。

IDocumentationProviderにメソッドを追加しても、Web apiフレームワークにはその知識がないため、最終的には自分で呼び出す必要があるため、役に立ちません。

以下のようにアクションとパラメーターを取得する方法の例:

 private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HelpPageSampleGenerator sampleGenerator)
    {
        HelpPageApiModel apiModel = new HelpPageApiModel();
        apiModel.ApiDescription = apiDescription;

        HttpActionDescriptor currentActionDescriptor = apiDescription.ActionDescriptor;

        IEnumerable<HttpParameterDescriptor> currentActionParamDescriptors = ad.GetParameters();

ところで、現在、アクションの「return」ドキュメントがヘルプページに表示されないというバグがありますが、いくつかのカスタマイズを行うことでこれを修正できます。八尾はここのヘルプページにいくつかの良いブログを持っています。

于 2013-02-21T16:52:19.173 に答える