我试图在ASP.NET Core应用程序中创建一个API方法,该方法可能会也可能不会接收整数输入参数。我有以下代码,但得到一个错误。我做错了什么?
// GET: api/mycontroller/{id}
[HttpGet("id:int?")]
public IActionResult Get(int id = 0)
{
// Some logic here...
}
答案 0 :(得分:1)
"id:int?"
不是有效的路由模板,它只是一个字符串文字(就像您希望请求网址看起来像http://server/api/MyController/id:int?
那样是不允许的。
有趣的是,这只是因为?
字符;如果你删除它,那么文字将被允许(即使它没用)。
"{id:int?}"
是一个正确的路由模板,并且可以正常工作,即网址看起来像http://server/api/MyController/42
或http://myserver/api/MyController/
,它将提供默认值
所以方法应该是这样的:
// GET: api/mycontroller/{id}
[HttpGet("{id:int?}")]
public IActionResult Get(int id = 0)
{
// Some logic here...
}