2012-03-09 72 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更有意義。