我正在尝试编写一个端点,将一个可选的id数组作为参数,如下所示:
url safe key
目标是调用[HttpGet]
public async Task<IActionResult> Get(int[] ids = null)
{
// do something
}
将返回所有记录,而对/api/myendpoint
的调用只会返回记录1和2。
我遇到的问题是对/api/myendpoint?ids=1&ids=2
的调用实际上初始化了一个空的数组,而不是传递默认的空值。
有关如何强制它实际使用默认值的任何想法吗?
答案 0 :(得分:-1)
这不是您问题的准确答案,但它确实提供了更清晰,更灵活的方法(我倾向于尽可能避免使用可选参数)。
您可以使用params
来实现相同的行为:
public async Task<IActionResult> Get(
params int[] ids) { ... }
现在,您可以针对所有ID调用Get()
,或针对特定ID调用Get(1, 2)
。对于所有效果,使用情况都是相同的,它完全避免了可选参数,恕我直言,这是一个优势。
另一种选择是简单地实现两个重载:
public async Task<IActionResult> Get(
int[] ids) { ... }
public async Task<IActionResult> Get() { ... }
无论如何,检查ids.Length
是0
是不是太繁重了。