按时过滤

时间:2013-09-13 03:36:55

标签: node.js rest express

我正在使用nodejs / express设计restful api。

  • 获取/报告(获取所有报告)
  • PUT / reports / 23(更新报告w / id 23)
  • GET / reports / 23(获得报告w / id 23)
  • POST / reports(创建报告)
  • DELETE / reports / 23(删除报告w / id 23)

迄今为止相当标准的东西。现在我想过滤时间(timestamp属性)。环顾四周,我找不到任何关于按时过滤的好例子。任何人都有很好的例子。

我想出的最好的是: /报告开始= 2013年7月13日&安培;停止= 2013年7月14日

哪个好,除了那时我不得不假设< =或<和>或> =并且不能在查询中表达不同的东西。

有没有一种很好的方式来表示以下查询?

  • 时间戳> 2013-07-13&&时间戳< 2013年7月14日
  • timestamp> = 2013-07-13&&时间戳< 2013年7月14日
  • 时间戳> 2013-07-13&&时间戳< = 2013-07-14
  • timestamp> = 2013-07-13&&时间戳< = 2013-07-14

提前致谢

1 个答案:

答案 0 :(得分:1)

提供类似> or >=的表达式并不是一个好的REST设计。我建议使用不同的查询参数 startDate - 表示请求的过滤器的开始日期 持续时间 - 以天为单位从startDate开始。然后您的请求看起来像

timestamp > 2013-07-13 && timestamp < 2013-07-14 ---  startDate=2013-07-13&duration=0
timestamp >= 2013-07-13 && timestamp < 2013-07-14 --- startDate=2013-07-13&duration=1
timestamp > 2013-07-13 && timestamp <= 2013-07-14 --- startDate=2013-07-14&duration=1
timestamp >= 2013-07-13 && timestamp <= 2013-07-14--- startDate=2013-07-13&duration=2

REST API的查询参数应该明确定义目的。