asp.net-core - 使用 Swashbuckle 生成的 OpenAPI 规范包含每个参数的默认空值
问题描述
我正在为多个 ASP.NET Core 项目使用 Swashbuckle(5.0.0-rc2,我知道有较新的版本,但我对此没有控制权)。
对于所有项目(除了一个),一切正常,生成的规范正常,“in”参数的“默认”值仅在我明确将其放入代码时出现:
public async Task<ActionResult<object[]>> Search(string searchString, [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 10)
所以规格看起来像:
{
"name": "searchString",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "pageNumber",
"in": "query",
"schema": {
"type": "integer",
"format": "int32",
"default": 1
}
},
{
"name": "pageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
}
“默认”属性仅在代码中显示。
对于我的另一个项目(相同的 nuget 版本和几乎相同的配置),行为是不同的,我对每个参数都有“默认”属性,但为空。在代码中没有默认值:
{
"name": "startDate",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "date-time",
"default": ""
}
问题是当我验证规范的语义时(当我将文件上传到 Azure API 管理器时完成)它会导致一些问题:默认值“空”当然对于日期时间值无效。
swagger 配置的唯一区别是第二个项目使用自定义方式生成模式 ID ......但我遇到了原始类型的“in”参数的问题,所以它不应该有任何影响。其他配置完全相同(我们使用内部 nuget 包来确保这一点)。
任何想法?
解决方案
推荐阅读
- azure-storage - Azure Function App 中用户计算机上给定路径的图像流/字节数组
- qt - 如何更改 Qt VitrualKeyboard InputPanel 布局?
- elasticsearch - elasticsearch java api中的指数提升
- sql - 在主查询中使用子查询结果
- c# - 映射xml文件,然后导入xmls文件c#
- c# - 在 Razor Pages 应用程序中使用 Web API JWT 身份验证
- php - 在 Composer 自动加载中定义加载类的顺序
- python - 填写缺失数据并与主集合并
- sql-server - 无法从 VS2017 执行 SSIS 包
- android - 已为元素“android.support.v7.widget.CardView”指定了 logcat 属性“xmlns:card_view”上的 Android Studio 错误