如何配置可空布尔类型URI参数 解决Swagger参数必选问题
功能需求
我希望实现接口支持三种数据检索逻辑:
- 当
isEven = null(默认值)时,同时返回偶数与奇数结果; - 当
isEven = true时,仅返回偶数结果; - 当
isEven = false时,仅返回奇数结果。
现有实现代码
[ApiController] [Route("api/[controller]/[action]")] public class MathematicsController : ControllerBase { [Route("{isEven:bool?}")] [HttpGet] public IActionResult GetData(bool? isEven = null) { var data = Enumerable.Range(1, 30).AsQueryable(); if (isEven is not null) data = data.Where(x => (x % 2 == 0) == isEven); return Ok(data.ToList()); } }
遇到的问题
Swagger界面中必须选中下拉选项才可执行接口请求,我已经在路由配置中通过{isEven:bool?}的写法标记该参数为可选,请问遗漏了什么配置?

排查结论
经排查确认问题根源为Swagger UI本身的交互限制,通过Chrome浏览器直接访问https://localhost:40443/api/mathematics/getdata地址(末尾带或不带斜杠均可)接口可正常响应,问题已解决。
内容的提问来源于stack exchange,提问作者Display Name
相关产品推荐
相关产品推荐

