能否让OData做到以下事情?我想通过传递可能不是主键的参数来查询REST调用。
我是否可以像这样调用REST方法 -> GetReports(22, 2014)
或者 Reports(22, 2014)
?
[HttpGet]
[ODataRoute("Reports(Id={Id}, Year={Year})")]
public IHttpActionResult GetReports([FromODataUri]int Id, [FromODataUri]int Year)
{
return Ok(_reportsRepository.GetReports(Id, Year));
}
这是我的最新更改。
//Unbound Action OData v3
var action = builder.Action("ListReports");
action.Parameter<int>("key");
action.Parameter<int>("year");
action.ReturnsCollectionFromEntitySet<Report>("Reports");
我的方法控制器ReportsController:
[HttpPost]
[EnableQuery]
public IHttpActionResult ListReports([FromODataUri] int key, ODataActionParameters parameters)
{
if (!ModelState.IsValid)
{
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
int year = (int)parameters["year"];
return Ok(_reportsRepository.GetReports(key, year).Single());
}
我尝试通过以下方式调用URL:
http://localhost:6064/odata/Reports(key=5,year=2014)/ListReports
未找到与请求URI 'http://localhost:6064/odata/Reports(key%3D5%2Cyear%3D2014)/ListReports'
匹配的HTTP资源。