我正在尝试建立与此类似的路线:
/ accounts / {accountId} / stuff /?stuffAfterDate = 2015-04-19T12%3A30%3A00
您也可以称为
/ accounts / {accountId} / stuff
归还一切。所以stuffAfterDate是一个过滤器。
我的Web API操作看起来像
[HttpGet]
[Route("accounts/{accountId}/stuff")]
public IHttpActionResult GetStuffForAccount(int accountId, DateTime? stuffAfterDate = null)
但是当我转到/ accounts / 1 / stuff时,它返回“请求缺少正文”
我在Stack Overflow或在线上找到的所有内容似乎都表明您需要做的就是使参数可为空,默认值为null,但这是行不通的。我也尝试过创建一个普通的路由表条目,但是我似乎也无法使它正常工作。我也尝试将[FromUri]添加到stuffAfterDate值。
有什么想法我做错了吗?
最佳答案
您正在尝试将其余样式与查询字符串混合使用。
您还可以仅通过如下所示的休息来实现此目的:
[HttpGet]
[Route("accounts/{accountId}/stuff/{stuffAfterDate:datetime?}")]
public IHttpActionResult GetStuffForAccount(int accountId, DateTime? stuffAfterDate = null)
您可以通过另一种方式尝试此操作:
[HttpGet]
[Route("accounts/{accountId}/stuff/")]
public IHttpActionResult GetStuffForAccount(int accountId)
{
var queryString = this.Request.GetQueryNameValuePairs();
var p1Val = queryString.SingleOrDefault(x => x.Key == "stuffAfterDate").Value;
DateTime stuffAfterDate = (string.IsNullOrEmpty(p1Val)) ? null : DateTime.ParseExact(p1Val, "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture);
//do your remaining code here
}
请让我知道,这对您有用吗?
关于c# - 来自查询字符串返回请求的Web API可选参数缺少正文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30518058/