2016-11-01 14 views
2

私は、複数のコントローラ(マイクロサービス)をホストするRESTサービスを構築しています。全体として、サービス「Bob」を呼び出すことができます。だからボクシングは "ボブ"/"ボブのマイクロサービスのコレクション"を表示します。次に、コントローラー名がリストされます。ちょうどXYZ、ABCなどが表示されています。「XYZ - XYZ APIのコレクション」などを表示する方法はありますか?Swagger(Asp.Net Core)にコントローラの説明がありますか?

swaggerのように見えますが、メソッド上には/// Summaryが表示されますが、コントローラには表示されません。

+0

クイック注:複数のコントローラは確かmicroservices –

+0

@KierenJohnstoneではありません - この意味では、それは彼らがそれをやってみたかった方法です。明らかに純粋なRESTではありませんが、ルートで指定されたコントローラーには複数のPOSTメソッドがあります。したがって、/ Bob/XYZ/method1、/ Bob/XYZ/method2などに投稿することができます。そのため、マイクロサービスと呼んでいます。 – SledgeHammer

+0

これは単なるWeb APIであり、RESTを使用していない可能性があります。マイクロサービスは、バージョン管理された、ビルドされた、および(通常は自動的に)デプロイされたサービスのコレクションであり、それぞれ独自のデータストアとバインドされたコンテキストを備えています。あなたはちょうど "コントローラ"について話しています –

答えて

4

多分闊歩ショー "XYZ - XYZのAPIのコレクション" を持ってする方法があるはい

が。ここが最も簡単な方法の一つです。 SwaggerのASP.NETコアバージョンはApiExplorerSettings属性を利用しています。 GroupNameを設定することができます。

public class BobController 
{ 
    [ApiExplorerSettings(GroupName="XYZ - A collection of XYZ APIs")] 
    public IActionResult MyAction() 
    { 
     ... 
    } 
} 

グループ名はSwagger UIに表示され、グループのアクションはその下に操作として表示されます。

enter image description here

編集:ここでははハンマーのコメントをもとにアイデアです。

Swagger ASP.NET Coreは、IApiDescriptionGroupCollectionProviderを使用して説明グループを作成します。私たちはインスピレーションのためにデフォルトのApiDescriptionGroupCollectionProviderを使用して自分自身を実装し、Startup.ConfigureServicesの間に私たちのプロバイダを登録することができます。我々の実装では、が各アクションのコントローラに関連付けられたApiDescriptionGroups()メソッドを返します。次に、それぞれのアクションではなく各コントローラにApiExplorerSettings属性を設定します。

+0

ありがとうShaun、私はコントローラのすべてのメソッドにこれを置く必要があるようですね?クラスに入れようとしましたが(属性が許可されているので)、スワッガーはそれを選択しませんでした。 – SledgeHammer

+0

@SledgeHammerはい。その属性をコントローラの各メソッドに配置する必要があります。時間が許せば、コントローラーレベルでそれを適用する方法を研究します。 –

+0

@SledgeHammerアイデアの編集を参照してください。 –

1

また、そのためのSwaggerOperationAttributeを使用することができます。

public class MyController 
{ 
    [SwaggerOperation(Tags = new[] { "XYZ - A collection of XYZ APIs" })] 
    public IActionResult MyAction() 
    { 
    } 
} 

Swashbuckle.AspNetCoreバージョン1.0.0-RC3でApiExplorerSettingsAttributeは、特定の闊歩文書内のアクションを含めるために使用されています。

関連する問題