是否可以隐藏“api-version”和“x-api-version”参数?
services.AddApiVersioning(config =>
{
config.ReportApiVersions = true;
config.DefaultApiVersion = new ApiVersion(1, 0);
config.AssumeDefaultVersionWhenUnspecified = true;
config.ApiVersionReader = ApiVersionReader.Combine(
new QueryStringApiVersionReader(),
new HeaderApiVersionReader()
{
HeaderNames = { "x-api-version" }
});
});
services.AddVersionedApiExplorer(
options =>
{
// note: the specified format code will format the version as "'v'major[.minor][-status]"
options.GroupNameFormat = "'v'VVV";
options.DefaultApiVersionParameterDescription = "Do NOT modify api-version!";
});
我已经检查了how-to-set-up-swashbuckle-vs-microsoft-aspnetcore-mvc-versioning,它实现了一个'RemoveVersionFromParameter'方法,但在这种情况下,Swagger页面将失去API版本,并始终使用默认的v1.0。如代码片段所示,我正在使用QueryStringApiVersionReader和HeaderApiVersionReader,但我不想支持url API版本控制。
注:API的所有版本(例如V1、V1.1、V2.0)都有多个swagger json页面
6条答案
按热度按时间yqyhoc1h1#
你可以尝试一个操作过滤器。这类似于Helder的解决方案,但是实现不必在文档级别,所以看起来更简单:
n1bvdmb62#
你有没有研究过
IDocumentFilter
,你可以从最终的swagger.json中删除一些东西,这样就可以从UI中删除它下面是从定义中删除一些属性的示例:
我这里还有一些样品:
https://github.com/heldersepu/Swagger-Net-Test/blob/e701b1d20d0b42c1287c3da2641ca521a0a7b592/Swagger_Test/App_Start/SwaggerConfig.cs#L766
bxpogfeg3#
您可以添加自己的自定义CSS,并使用它来隐藏这些元素(并进行任何其他您想要的自定义)。
编辑-示例:
假设你试图隐藏--在我的例子中;您可以轻松地将其调整为适合您的-“Remove Basket”操作中的
tenantId
参数:这将实现以下目的:
hiz5n14c4#
这可以通过设置ApiExplorerOptionSubstituteApiVersionInUrl = true来完成。在您的情况下:
y1aodyip5#
这对我很管用。
启动时
只需在属性中添加数据注解[IgnoreDataMember]即可将其隐藏。
我已经基于this article创建了这个解决方案。
drnojrws6#
您可以添加startup.cs文件。
然后,你可以在控制器上添加顶部。但我试图没有这个([ApiVersion(“1.0”)]),它可以运行。我已经成功地隐藏版本参数。