Odr*_*rai 4 .net c# api swagger-ui swashbuckle
是否可以隐藏“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!";
});
Run Code Online (Sandbox Code Playgroud)
我已经检查了how-to-set-up-swashbuckle-vs-microsoft-aspnetcore-mvc-versioning它实现了“RemoveVersionFromParameter”方法,但在这种情况下,Swagger 页面会丢失 api 版本并始终使用默认的 v1.0 . 如代码片段所示,我使用的是 QueryStringApiVersionReader 和 HeaderApiVersionReader,但我不想支持 url api 版本控制。
注意:API 确实有多个 swagger json 页面适用于所有版本(例如 V1、V1.1、V2.0)
你可以试试操作过滤器。这类似于Helder的解决方案,但实现不一定在文档级别,所以看起来更简单:
public void Configure(SwaggerGenOptions options)
{
// Filter out `api-version` parameters globally
options.OperationFilter<ApiVersionFilter>();
}
internal class ApiVersionFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
var parametersToRemove = operation.Parameters.Where(x => x.Name == "api-version").ToList();
foreach (var parameter in parametersToRemove)
operation.Parameters.Remove(parameter);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以添加自己的自定义 CSS 并使用它来隐藏这些元素(并进行您想要的任何其他自定义)。
app.UseSwaggerUI(c =>
{
...
c.InjectStylesheet("/swagger-ui/custom.css");
...
});
Run Code Online (Sandbox Code Playgroud)
编辑- 示例:
假设你想隐藏——在我的例子中;您可以轻松地将其调整为您的 -tenantId此“删除篮子”操作中的参数:
这会做到这一点:
div#operations-baskets-remove tr[data-param-name="tenantId"] {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2937 次 |
| 最近记录: |