MNV*_*NVR 2 swagger swashbuckle asp.net-core-webapi
我正在使用 swagger.json 文件(由 Swashbuckle 生成)为 ReDoc 显示 API 文档。
我需要什么:
将x-logo供应商扩展添加到使用 Swashbuckle(Swashbuckle.AspNetCore.SwaggerGen库)生成的 swagger json,以便 ReDoc UI像这样在左上角显示徽标

问题:
我能够添加x-log到 swagger.json 文件,但它被添加到文件的错误部分。它需要在内部info部分。
这是我所做的添加 x-logo
public class XLogoDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
swaggerDoc.Extensions["x-logo"] = new { url = "https://URL/of/the/logo", altText = "Company Logo" };
}
}
Run Code Online (Sandbox Code Playgroud)
SwaggerDoc作为services.AddSwaggerGen(options =>
{
options.DocumentFilter<XLogoDocumentFilter>();
});
Run Code Online (Sandbox Code Playgroud)
实际的
{
"swagger": "2.0",
"info": {
"version": "v1",
"title":"Sample REST API"
},
"x-logo": {
"url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
"altText": "Aimia Logo"
}
}
Run Code Online (Sandbox Code Playgroud)
预期的
{
"swagger": "2.0",
"info": {
"version": "v1",
"title":"Sample REST API",
"x-logo": {
"url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
"altText": "Aimia Logo"
}
},
}
Run Code Online (Sandbox Code Playgroud)
非常感谢x-logo在 swagger.json 文件的正确部分提供任何帮助或建议。
小智 7
较新版本的 Swashbuckle 在 SwaggerDoc 设置中支持这一点:
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = ApiDescription,
Version = "v1",
Extensions = new Dictionary<string, IOpenApiExtension>
{
{"x-logo", new OpenApiObject
{
{"url", new OpenApiString("https://blah.com/logo")},
{ "altText", new OpenApiString("The Logo")}
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
输入问题后,我自己找到了解决方案。不是直接向 swaggerDoc 添加扩展,而是将其添加到 swaggerDoc.Info 对象。
public class XLogoDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
// need to check if extension already exists, otherwise swagger
// tries to re-add it and results in error
if (!swaggerDoc.Info.Extensions.ContainsKey("x-logo"))
{
swaggerDoc.Info.Extensions.Add("x-logo", new {
url = "https://URL/To/The/Logo",
altText = "Logo",
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3152 次 |
| 最近记录: |