我有一个包含两个必需参数和几个可选参数的操作:
[HttpGet]
public IHttpActionResult GetUsers(DateTime dateFrom, DateTime dateTo, string zipcode, int? countryId)
{
using (DataHandler handler = new DataHandler())
return Ok(handler.GetUsers(dateFrom, dateTo).ToList());
}我想要一个像这个的网址:
/api/getusers/2018-12-03T07:30/2018-12-03T12:45?zipcode=4002&countryId=4zipcode和countryId是可选的,将与?-thingy一起添加。所需的参数dateFrom和dateTo将与/一起添加
因此,以下urls也应该是可能的:
/api/getusers/2018-12-03T07:30/2018-12-03T12:45?countryId=4
/api/getusers/2018-12-03T07:30/2018-12-03T12:45?zipcode=4002
/api/getusers/2018-12-03T07:30/2018-12-03T12:45我试了几个路线,比如
[Route("getusers/{dateFrom}/{dateTo}")]
[Route("getusers/{dateFrom}/{dateTo}*")]
[Route("getusers/{dateFrom}/{dateTo}**")]
[Route("getusers/{dateFrom}/{dateTo}?zipcode={zipcode}&countryId={countryId}")]但他们都不起作用。当我删除可选参数时,它可以工作,但我需要那些可选参数。
知道该怎么做吗?
发布于 2018-12-03 10:31:22
使操作方法中的可选参数可选
如果路由参数是可选的,则必须为方法参数定义默认值。
//GET /api/getusers/2018-12-03T07:30/2018-12-03T12:45?countryId=4
//GET /api/getusers/2018-12-03T07:30/2018-12-03T12:45?zipcode=4002
//GET /api/getusers/2018-12-03T07:30/2018-12-03T12:45
[HttpGet]
[Route("getusers/{dateFrom:datetime}/{dateTo:datetime}")]
public IHttpActionResult GetUsers(DateTime dateFrom, DateTime dateTo, string zipcode = null, int? countryId = null) {
using (DataHandler handler = new DataHandler())
return Ok(handler.GetUsers(dateFrom, dateTo).ToList());
}https://stackoverflow.com/questions/53591773
复制相似问题