c# – 自定义生成的模型名称 – Swagger UI

c# – 自定义生成的模型名称 – Swagger UI,第1张

概述我正在尝试调整自动生成的Swagger定义中使用的模型的“displayName”. 这只会影响Swagger名称,这意味着代码中的命名空间不会受到影响,而在从Swagger UI查看模型时,您会看到自定义名称. 目前,从代码返回的模型名称是一个命名空间,看起来像这样:bcdef,我想在代码中添加一个属性并“掩盖”Swagger文档的名称,这样当文档/ Swagger定义得到时生成它将显示为Cus 我正在尝试调整自动生成的Swagger定义中使用的模型的“displayname”.

这只会影响Swagger名称,这意味着代码中的命名空间不会受到影响,而在从Swagger UI查看模型时,您会看到自定义名称.

目前,从代码返回的模型名称是一个命名空间,看起来像这样:bcdef,我想在代码中添加一个属性并“掩盖”Swagger文档的名称,这样当文档/ Swagger定义得到时生成它将显示为CustomSwaggername.

我有一些API(C#)使用包含Swashbuckle(首选)和SwaggerGen的工具,但是现在,我只是想让它在任何一个中工作,如果可能的话.

我尝试过使用看似正确的属性:

[ResponseType(typeof(Company)),displayname("NewCompany")][SwaggerResponse(200,"NewCompany",typeof(object))]

没有运气.我还浏览了SwashBuckle git repo,希望找到一些东西.

一张图片应该有助于进一步解释我想要实现的目标.

我知道这可能看起来像一个奇怪的用例,但它是为我们的AWS API Gateway自动化编写的工具,它将使用Swagger定义进行一些比较.

解决方法 答案是:使用IdocumentFilter:

private class ApplydocumentFilter_ChangeCompany : IdocumentFilter    {        public voID Apply(Swaggerdocument swaggerDoc,SchemaRegistry schemaRegistry,IAPIExplorer APIExplorer)        {            if (swaggerDoc.deFinitions != null)            {                swaggerDoc.deFinitions.Add("Company123",swaggerDoc.deFinitions["Company"]);            }            if (swaggerDoc.paths != null)            {                swaggerDoc.paths["/API/Company"].get.responses["200"].schema.@ref = "#/deFinitions/Company123";            }        }    }

这是代码:
https://github.com/heldersepu/SwashbuckleTest/commit/671ce648a7cc52290b4ad29ca540b476e65240e6

以下是最终结果:
http://swashbuckletest.azurewebsites.net/swagger/ui/index#!/Company/Company_Get

总结

以上是内存溢出为你收集整理的c# – 自定义生成的模型名称 – Swagger UI全部内容,希望文章能够帮你解决c# – 自定义生成的模型名称 – Swagger UI所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1232762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存