swagger - 使用 Swashbuckle Asp.Net Core for ReDoc 添加 x-logo 供应商扩展
问题描述
我正在为 ReDoc 使用 swagger.json 文件(由 Swashbuckle 生成)来显示 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" };
}
}
- 将过滤器添加到
SwaggerDoc
as
services.AddSwaggerGen(options =>
{
options.DocumentFilter<XLogoDocumentFilter>();
});
实际的
{
"swagger": "2.0",
"info": {
"version": "v1",
"title":"Sample REST API"
},
"x-logo": {
"url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
"altText": "Aimia Logo"
}
}
预期的
{
"swagger": "2.0",
"info": {
"version": "v1",
"title":"Sample REST API",
"x-logo": {
"url": "https://rebilly.github.io/ReDoc/petstore-logo.png",
"altText": "Aimia Logo"
}
},
}
非常感谢x-logo
在 swagger.json 文件的正确部分提供的任何帮助或建议。
解决方案
输入问题后,我自己找到了解决方案。不要直接将扩展添加到 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",
});
}
}
}
推荐阅读
- outlook - 无法更新 Outlook 2016 msi 安装程序以支持 Office.js 要求集 1.4
- .htaccess - .htaccess 重定向循环与 RewriteCond
- c# - 当我尝试提交表单以将一些值和上传图像的路径存储到数据库中时,我收到一个错误,因为 [未设置对象引用 ....]
- reportlab - 从 ReportLab 中的表格行中删除圆角边框
- java - EndPoint 类中的 Spring WS SOAP 响应头修改
- mysql - 从表中删除记录取决于其他表值
- ionic-framework - Ionic 4 中的 CSS 变量
- reactjs - 如何访问 getDerivedStateFromProps 中的组件函数
- openpai - 概念Job和Framework的区别和关系
- cesium - 在 cesium 中,如何随时间动态更新标签?