我正在尝试建立与此类似的路线:

/ 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/

10-14 20:34
查看更多