C#中使用swagger小技巧
swaggerUI顯示的接口內容主要用於開發階段便於與前端聯調,不適合發布到對外的站點。
有以下兩種方式,讓接口不顯示在SwaggerUI中
1.使用屬性 [ApiExplorerSettings(IgnoreApi = true)]設置接口不顯示到swaggerUI,此方法比較靈活,可以根據情況在對於的控制器或者API接口中添加。
列如:
[ApiExplorerSettings(IgnoreApi = true)]
public class SystemController : ApiController
{
}
這樣編寫,整個控制器中的接口都不會顯示在swaggerUI,如果只是想針對某個接口不顯示在UI中,可以在接口處增加屬性,列如:
public class SystemController : ApiController
{
[HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public string GetSystemTime()
{
return DateTime.Now.ToString();
}
}
我們調試一般都會將編譯類型選擇為Debug,那么可以如下寫:
#if (!DEBUG)
[ApiExplorerSettings(IgnoreApi = true)]
#endif
public class SystemController : ApiController
{
}
這樣開發階段就可以正常的查看swaggerUI,到發布到UAT或者其他環境時,選擇Release類型編譯發布即可。
針對某個接口不顯示在UI中,可以在接口處修改屬性,列如:
public class SystemController : ApiController
{
[HttpGet]
#if (!DEBUG)
[ApiExplorerSettings(IgnoreApi = true)]
#endif
public string GetSystemTime()
{
return DateTime.Now.ToString();
}
}
第二種方式:
就是不加載SwaggerConfig文件,這樣在發布就不會顯示swaggerUI,列如:
#if (DEBUG)
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
#endif
這樣做的缺點是,接口說明都不顯示了。
可以通過自己的使用情況,選擇合適的方式。