2012-03-09 27 views
46

我休息一下URL来获取所有用户的格式是这样的: http://example.com/users/12345适当休息格式的URL范围

要获得所有用户的投标: http://example.com/users

通过ID来获得单个用户 http://example.com/users/12345/bids

要得到两个日期之间的所有用户的投标: http://example.com/users/12345/bids/?start=01/01/2012&end=01/31/2012

或应该是这样的: http://example.com/users/12345/bids/start/01012012/end/01312012

我倾向于第一个日期范围URL作为开始和结束不是域中的实体。使用日期范围格式化REST网址的正确方法是什么?

感谢,

汤姆

+2

我会建议把日期在ISO 8061格式:2012-01-31。这避免了不确定性,无论是月份 - 日 - 年还是日 - 月 - 年。 – 2017-03-08 11:47:32

回答

50

http://example.com/users/12345/bids?start=01-01-2012&end=01-31-2012

对同一“级别”的出价(去掉问号之前的斜线)查询参数。但是如果他们只提供一个查询参数,你可能想要获得支持。因此,如果他们只提供“开始”,那么它将在该日期之后获得所有出价,或者如果他们仅提供“结束”,则会在该日期之前获得所有出价。

其原因是查询参数适合从GET请求获取结果的子集。他们不会进入另一个级别,因为下一级通常是一个具有唯一标识符的特定项目。

6

我会去与http://example.com/users/12345/bids?start=2012-01-01&end=2012-01-31

  • 在查询字符串之前不应该有斜杠。
  • 避免在查询字符串中使用斜杠。这样会更容易。
+1

那么你应该也可以使用国际上可读的日期格式,根据https://en.wikipedia.org/wiki/ISO_8601,这将是“2012-01-31”。 “MDY”字面上仅限于美国境内..... https://en.wikipedia.org/wiki/Date_format_by_country – Blauhirn 2017-04-22 23:10:15

0

如果exam​​ple.com/users/12345获取id为12345的用户,那么通过id获取所有用户,它应该是example.com/users,其中id包含在响应中作为关系。 (通常是指向该资源的超链接)。

我们让他们按日期范围应该是example.com/users/start=01-01-2012 &末= 2012年1月31日

12345部分是个人用户的ID,这是一种资源,因此不应将其包含在其他用户中。

作为参数的名称应该是有意义的。开始可能意味着什么,但start_date更有意义。