我正在構建一個將託管多個控制器(微服務)的REST服務。總的來說,讓我們打電話給服務「鮑勃」。所以Swagger會顯示「Bob」/「Bob Microservices的集合」。然後列出控制器名稱。現在,它只是顯示XYZ,ABC等等。有沒有辦法讓我們可以展示「XYZ - XYZ API的集合」或類似的東西?Swagger(Asp.Net Core)是否有控制器描述?
似乎像swagger顯示///方法摘要,但不在控制器上。
我正在構建一個將託管多個控制器(微服務)的REST服務。總的來說,讓我們打電話給服務「鮑勃」。所以Swagger會顯示「Bob」/「Bob Microservices的集合」。然後列出控制器名稱。現在,它只是顯示XYZ,ABC等等。有沒有辦法讓我們可以展示「XYZ - XYZ API的集合」或類似的東西?Swagger(Asp.Net Core)是否有控制器描述?
似乎像swagger顯示///方法摘要,但不在控制器上。
有沒有一種辦法也許有招搖秀 「XYZ - XYZ API的集合」
是。這是最簡單的方法之一。 Swagger的ASP.NET Core版本利用了ApiExplorerSettings
屬性。您可以設置GroupName
。
public class BobController
{
[ApiExplorerSettings(GroupName="XYZ - A collection of XYZ APIs")]
public IActionResult MyAction()
{
...
}
}
組名出現在Swagger用戶界面中,該組的操作列在下面的操作中。
編輯:這是基於大錘的評論的想法。
Swagger ASP.NET Core使用IApiDescriptionGroupCollectionProvider
來構建其描述組。我們可以使用默認的ApiDescriptionGroupCollectionProvider
來實現我們自己的靈感,並在Startup.ConfigureServices
期間註冊我們的提供商。我們的實施將使ApiDescriptionGroups()
方法返回與每個動作的控制器關聯的GroupName
。然後我們可以在每個控制器上放置ApiExplorerSettings
屬性,而不是放在每個動作上。
謝謝肖恩,好像我需要把它放在控制器的每個方法?我試着把它放在課堂上(因爲屬性表示它允許),但是Swagger沒有選擇它。 – SledgeHammer
@SledgeHammer是的。我們確實需要將該屬性放在控制器中的每個方法上。如果時間允許,我會研究一種在控制器級應用它的方法。 –
@SledgeHammer查看想法的編輯。 –
您也可以使用SwaggerOperationAttribute爲:
public class MyController
{
[SwaggerOperation(Tags = new[] { "XYZ - A collection of XYZ APIs" })]
public IActionResult MyAction()
{
}
}
在Swashbuckle.AspNetCore版本1.0.0-RC3的ApiExplorerSettingsAttribute用於包括特定揚鞭文檔中的作用。
快速提示:多個控制器當然不是微服務 –
@KierenJohnstone - 從這個意義上說,他們就是這麼做的。顯然不是純粹的REST ...但我們將在路由器指定的控制器中擁有多個POST方法。所以你可以發佈到/ Bob/XYZ/method1,/ Bob/XYZ/method2等,這就是爲什麼他們稱之爲微服務。 – SledgeHammer
這只是一個Web API,可能不使用REST。微服務是完全不同的東西:一組獨立版本,構建和(通常是自動)部署的服務,每個服務通常都有自己的數據存儲和有界的上下文。你只是在談論「控制器」 –