在 Swagger UI 中,如何自定义 body 输入 ui(模型架构 UI)

Posted

技术标签:

【中文标题】在 Swagger UI 中,如何自定义 body 输入 ui(模型架构 UI)【英文标题】:In Swagger UI, how to customize body input ui (model schema UI) 【发布时间】:2017-01-24 21:58:21 【问题描述】:

我在 C#.Net 应用程序中使用带有 Swagger 2.0 的“swagger UI”,并显示 Get、Post、Delete 端点。

对于 Post,我将“模型架构”作为正文(输入参数)传递。

很难使用一个文本区域来输入类对象。

是否可以单独自定义主体参数 UI...例如为类对象(模型架构)中的所有参数单独输入框?

因此,对于带有模型架构参数的 post 方法,UI 将是类对象(模型架构)中所有参数的单独文本框..

【问题讨论】:

【参考方案1】:

您是否注意到点击Data Type 列上的Example value 实际上会使用默认实体内容填充body 值?这是避免全部输入的开始。

尽管如此,您 can also override 当前 Swagger UI 显示,更改 existing views content 以匹配 text-area 以转换为显示属性文本框而不是单个文本区域的定制解析器。

【讨论】:

感谢您的回复。单击“数据类型”列上的“示例值”,用默认值正确填写正文值。 在我的用例中,我有非常大的类/正文参数要发布。作为最终用户,在一个文本区域(一个文本区域)中填充所有值并不容易。我正在为正文值中的每个参数寻找一个单独的文本框。 你是对的......正如你所提到的,我正在寻找单独的文本框而不是单个文本区域。如何进行一般转换/覆盖(以支持所有相似的主体参数)? Swagger UI 为此提供了一个通用控件作为文本区域。我没有找到任何与您的要求相似的东西,因此您实际上可以通过自己构建它来为它做出贡献。【参考方案2】:

将以下代码添加到Startup.cs中的ConfigureServices

services.AddControllers()
        //Used to Add Input field to the Swagger UI
            .ConfigureApiBehaviorOptions(options =>
            
                options.SuppressInferBindingSourcesForParameters = true;
            ); 

【讨论】:

以上是关于在 Swagger UI 中,如何自定义 body 输入 ui(模型架构 UI)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swagger UI 中发送带有请求的自定义标头?

如何编写自定义排序器以在 UI 中按名称对 springdoc swagger 标签进行排序?

Spring Boot + Swagger + 自定义 swagger-ui.html

swagger ui 的界面可以自定义吗

.NET Core基础篇之:集成Swagger文档与自定义Swagger UI

做了一个swagger-ui的主题(theme)