如何定义以下API生成的swagger中属性的默认值?
public class SearchQuery
{
public string OrderBy { get; set; }
[DefaultValue(OrderDirection.Descending)]
public OrderDirection OrderDirection { get; set; } = OrderDirection.Descending;
}
public IActionResult SearchPendingCases(SearchQuery queryInput);
字符串
Swashbuckle生成OrderDirection作为所需参数。我希望它是可选的,并向客户端指示默认值(不确定swagger是否支持)。
我不喜欢使属性类型为空。还有别的选择吗?理想情况下使用内置类...
我使用Swashbuckle。AspNetCore -https://learn.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio
5条答案
按热度按时间jhiyze9q1#
我总是这样设置参数本身的默认值:
字符串
下面是在swagger-ui上的样子:
http://swashbuckletest.azurewebsites.net/swagger/ui/index#/TestPost/TestPost_Get
更新
在讨论了注解之后,我更新了Swagger-Net,以通过反射读取
DefaultValueAttribute
。型
下面是swagger json的样子:
型
Swagger-Net的源代码如下:
https://github.com/heldersepu/Swagger-Net的
测试项目的源代码在这里:
https://github.com/heldersepu/SwashbuckleTest的
r6hnlfcb2#
如果可以在控制器中设置默认参数值,那么它的工作方式是这样的
字符串
31moq8wy3#
这适用于ASP.net MVC5,代码对.Net Core无效
1-按如下方式定义自定义属性
字符串
2-定义Swagger OperationFilter类
型
3-在SwaggerConfig文件中注册OperationFilter
型
4-用属性装饰控制器方法
型
wsewodh24#
第一种方法
根据其中一个答案here,您应该能够简单地将以下内容添加到您的模型中,尽管我还没有验证这一点:
字符串
第二种方式
在.net 6中,我使用了以下代码:
型
然后在Program.cs中
型
第三种方法
在.net 6和Piggybacking关闭Sameh的答案.
要使用多个属性,请像这样装饰属性类:
型
对于swashbuckle的6.5.0,我认为属性是这样的:
型
由于我试图在多部分消息上使用此消息作为主体参数,因此我必须这样做,但使用风险自担:
型
o8x7eapl5#
在YAML文件中,可以定义需要哪些属性。此示例来自NSwag配置。
字符串
Swagger - Enums
Swagger - Unlocking the Spec: The default keyword的