在 IQueryable<Log> Web API 操作上返回 204 状态代码
Posted
技术标签:
【中文标题】在 IQueryable<Log> Web API 操作上返回 204 状态代码【英文标题】:Return 204 Status Code on IQueryable<Log> Web API Action 【发布时间】:2021-07-27 17:00:03 【问题描述】:我正在使用web api
到JSON
和custom CVS
解析器导出大量数据。一切正常,但我想在查询返回 0 条记录时返回 204 status code
。我找不到设置状态码的方法,因为我返回IQueryable<Log>
。有什么建议吗?
[HttpGet]
[Route("user/statistic")]
public IQueryable<Log> Statistic(int userId, DateTime startDate, DateTime endDate, CancellationToken cancellationToken)
var logs = _context.Find(userId, startDate, endDate);
return logs;
public IQueryable<Log> Find(int userId, DateTime startDate, DateTime endDate)
var startDateSql = startDate.AddDays(-1).Date;
var endDateTimeSql = endDate.AddDays(1).Date;
return Logs.Where(w => w.UserId == userId && w.DateStamp > startDateSql && w.DateStamp < endDateTimeSql).AsNoTracking();
【问题讨论】:
HttpContext.Response.StatusCode = 204;值得一试 【参考方案1】:尝试在您的 API 方法中使用 IActionResult
而不是 IQueryable
那么你可以有这样的东西:
public IActionResult MyApi()
// if the result has any item
return Ok(result);
// otherwise
return NoContent(); // which returns 204 status code
【讨论】:
我无法在操作中执行 IQueryable以上是关于在 IQueryable<Log> Web API 操作上返回 204 状态代码的主要内容,如果未能解决你的问题,请参考以下文章
IQueryable 和 IQueryable<T> 是异步的吗?
以更好的性能将 IQueryable<X> 转换为 IQueryable<Y>
返回 IEnumerable<T> 与 IQueryable<T>