在API中加入OPEN API 或者 Swagger 说明文档,可以方便 API 使用者了解和测试 API。但是在某些生产环境中,我们可能并不想让普通用户知道如何调用 API。
本文介绍的方法可以让 ASP.NET CORE 的 API 文档页面变为可选项。
首先在appsettings.json 文件中增加一个选项,我就叫它 EnableApiDoc 吧。当它被设置为 TRUE 的时候,我们希望ASP.NET CORE 显示 API 文档页面,否则不显示。
其次,我们在 StartUp.Configure 方法中加上一个 if 语句来根据 EnableApiDoc 的值控制 API 文档的显示。
下面是参考代码:
var config = app.ApplicationServices.GetService<IConfiguration>();
var enableApiDoc = config.GetValue<bool>("EnableApiDoc");
if (enableApiDoc)
{
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(
options =>
{
// build a swagger endpoint for each discovered API version
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
}
});
}