我对Odata的新用户已经使用.net(c#)和此视频https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html编写了API。
问题是我有这样的构造方法:
[EnableQuery]
public ObjectResult<InclusionWorkBookResult> GetInclusionWorkBooks()
{
string query = this.Url.Request.RequestUri.Query;
if (string.IsNullOrEmpty(query))
{
return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "");
}
return db.GetInclusionWorkBookData();
}
正如您将能够看到的那样,如果用户未指定查询(这是为了强制它们过滤,因为完整数据集是数百万行),它会返回Forbidden错误代码。 但是这不起作用,因为Request.CreateErrorRespons是一个HttpResponseMessage,get返回ObjectResult。
我知道在查询odata时可以得到一个禁止的错误(通过搞乱网址查询)。
我的问题是: 如何在不弄乱GET的返回标题的情况下返回自定义错误消息?
提前谢谢。
答案 0 :(得分:0)
您可以返回IHttpActionResult,例如:
public IHttpActionResult GetInclusionWorkBooks()
{
string query = this.Url.Request.RequestUri.Query;
if (string.IsNullOrEmpty(query))
{
return BadRequest();
}
return Ok(db.GetInclusionWorkBookData());
}
如果提供了查询,结果将是200(OK)和请求的数据,否则将是400 Bad Request