我想讓用戶通過三種方式檢索資料:
- 如果
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 是罪魁禍首。我通過導航到https://localhost:40443/api/mathematics/getdata(或使用斜杠)對 Chrome 進行了測驗,它可以作業。結案!
uj5u.com熱心網友回復:
如果你已經通過路徑做到了,你可以:
[Route("{isEven}")]
[HttpGet]
public IActionResult GetData(bool isEven) => DoGetData(isEven);
[HttpGet]
public IActionResult GetData() => DoGetData(isEven: null);
這給了你:
.../api/Mathematics/GetData/true
.../api/Mathematics/GetData/false
.../api/Mathematics/GetData
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498394.html
