在网络中使用 Route 属性的可选日期参数 API
Optional date parameter using Route attribute in web API
我想要我的 API 方法有两个端点:
api/bids/
和
api/bids/{yyyy-MM-dd}
在第一种情况下,我会将未定义的日期映射为今天
我试过这样做,但是没有成功:
[RoutePrefix("api/bids")]
public class BidsController : ApiController
{
[HttpGet, Route("api/bids/{dateTime?}")]
public async Task<IHttpActionResult> GetBids(DateTime? dateTime = null)
{
var correctDate = (dateTime != null) && (dateTime.Value >= DateTime.Now.Date);
DateTime date = correctDate ? dateTime.Value : DateTime.Now.Date;
try
{
return Ok(date);
}
catch (Exception ex)
{
string errorMessage = ex.Message;
return BadRequest(errorMessage);
}
}
}
在我的案例中,我如何使用带有属性路由的可选日期参数?
您需要在路由中使您的参数可选以及默认的空分配:
您的端点路由也需要更改为不包含 api/bids
[RoutePrefix("api/bids")]
public class BidsController : ApiController
{
[HttpGet, Route("{dateTime:DateTime?}")]
public async Task<IHttpActionResult> GetBids(DateTime? dateTime = null)
{
var correctDate = (dateTime != null) && (dateTime.Value >= DateTime.Now.Date);
DateTime date = correctDate ? dateTime.Value : DateTime.Now.Date;
try
{
return Ok(date);
}
catch (Exception ex)
{
string errorMessage = ex.Message;
return BadRequest(errorMessage);
}
}
}
为了阅读方便,我改了这行
[HttpGet, Route("api/bids/{dateTime?}")]
至此
[HttpGet, Route("{dateTime:DateTime?}")]
我想要我的 API 方法有两个端点:
api/bids/
和
api/bids/{yyyy-MM-dd}
在第一种情况下,我会将未定义的日期映射为今天
我试过这样做,但是没有成功:
[RoutePrefix("api/bids")]
public class BidsController : ApiController
{
[HttpGet, Route("api/bids/{dateTime?}")]
public async Task<IHttpActionResult> GetBids(DateTime? dateTime = null)
{
var correctDate = (dateTime != null) && (dateTime.Value >= DateTime.Now.Date);
DateTime date = correctDate ? dateTime.Value : DateTime.Now.Date;
try
{
return Ok(date);
}
catch (Exception ex)
{
string errorMessage = ex.Message;
return BadRequest(errorMessage);
}
}
}
在我的案例中,我如何使用带有属性路由的可选日期参数?
您需要在路由中使您的参数可选以及默认的空分配:
您的端点路由也需要更改为不包含 api/bids
[RoutePrefix("api/bids")]
public class BidsController : ApiController
{
[HttpGet, Route("{dateTime:DateTime?}")]
public async Task<IHttpActionResult> GetBids(DateTime? dateTime = null)
{
var correctDate = (dateTime != null) && (dateTime.Value >= DateTime.Now.Date);
DateTime date = correctDate ? dateTime.Value : DateTime.Now.Date;
try
{
return Ok(date);
}
catch (Exception ex)
{
string errorMessage = ex.Message;
return BadRequest(errorMessage);
}
}
}
为了阅读方便,我改了这行
[HttpGet, Route("api/bids/{dateTime?}")]
至此
[HttpGet, Route("{dateTime:DateTime?}")]