我有一个控制器来获取大于某个日期的项目计数。存储库显示为:
public Dictionary<int, int> GetAllComplaintsCount(DateTime start)
{
try
{
return _context.Checklists
.Where(a => a.COMPLAINT.Received_DT > start)
.GroupBy(a => a.MonitorEnteredEmpID)
.ToDictionary(g => g.Key, g => g.Count());
}
catch (Exception ex)
{
_logger.LogError("Could not get am with checklist", ex);
return null;
}
}
编辑我已经包含了我的路由器,看看它是否正确:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "crams/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "route",
template: "crams/{controller}/{action}/{start?}");
});
Question没有start参数,我可以通过postman获得http://localhost:8000/crams/api/counts。我不确定,虽然,如何通过邮差合并日期,所以它只能拉日期大于开始。
I've try
http://localhost: 8000/集成/api/数量/2016-1-1但是返回null
/api/counts/2016-1-1返回null
你的API是:
... GetAllComplaintsCount(DateTime start)
所以你的url应该是:
/api/counts?start=2016-1-1
这是默认路由。由于您的问题中没有包含路由,我假设(考虑到症状)它是默认的:
/api/{controller}/{id}
例如使用/api/counts/2016-1-1
指定"2016-1-1"作为id
参数,但是您没有id
参数,并且您没有为start
指定值,因此您得到null。
你可以添加一个路由
/api/{controller}/{start}
我刚刚创建了一个api:
[HttpGet]
public string Test(DateTime d)
{
return d.ToString();
}
并通过邮递员调用(尽管任何客户机都会给出相同的结果)
http://localhost/api/../Test?d = 2016-1-1
,它返回预期的"01/01/2016 00:00:00"
你可以尝试将tick传递给你的API
http://localhost: 8000/集成/api/数量/636027305821590000
和
public Dictionary<int, int> GetAllComplaintsCount(Int64 dateTicks)
{
try
{
var startDate = new DateTime(dateTicks);
return _context.Checklists
.Where(a => a.COMPLAINT.Received_DT > startDate)
.GroupBy(a => a.MonitorEnteredEmpID)
.ToDictionary(g => g.Key, g => g.Count());
}
catch (Exception ex)
{
_logger.LogError("Could not get am with checklist", ex);
return null;
}
}
这是一个关于如何从日期(使用JS)获得tick的信息
如何将JavaScript日期对象转换为刻度