2013-07-04 82 views
2

使用/ api/v1/account/names我在我的數據庫中請求所有名稱,但如果需要知道記錄數(名稱),該怎麼辦? (尋呼機)使用REST請求表中記錄數的最佳方法

哪個以下REST的URL的方式,你會推薦:

  1. /API/V1 /帳號/名/數
  2. /API/V1 /帳號/名字算什麼? - (沒有很好地工作,新澤西州)
  3. /API/V1 /帳號/名/記錄
  4. 您的建議...

API/V1 /帳號/名稱和一個結果對於api/v1/account/names#無論# 是不同的。

THX

+0

以及如果該計數會在您的計數請求和數據請求之間發生變化,該怎麼辦? –

+0

也許這是另一種方法 - 完全避免這種情況。這可能是最好的一個。我非常想要申請一些我忽略了這個問題的記錄。你能寫一個答案,以便我可以評價你嗎? –

+0

寫了一個答案。 –

回答

1

尋呼,你不應該做一個計數查詢,但查詢一次一切:數和網頁記錄。

在你的數據庫,發出類似的信息(PGSQL的語法 - 獲取的25條記錄第3頁,其中第4列的值是「X」)

Select 
     row1, row2, row3, count(*) over() 
     from MyShema.MyTable 
     where row4 = 'x' order by row1 asc 
     offset 75 limit 25; 

中的結果將包含在第4列的總數(每一行)。

然後建立一個看起來像

{ 
    totalCount: 1280,  -- value in row 1 column 4 
    offset: 75, 
    rows: [ 
     [row1_1, row1_2,row1_3], 
     [row2_1, row2_2,row2_3], 
     ... 
     [row25_1, row25_2,row25_3], 
    ] 
} 

其中包含的總行數查詢,偏移量和頁面內容的時間JSON響應。

該響應可以通過尋呼網格輕鬆處理。

0

如果GET /api/v1/account/names返回名稱的列表:

{ 
    "names": ["Foo", "Bar", "Baz"] 
} 

又何嘗不是,但一個count元素插入此列表:

{ 
    "names": ["Foo", "Bar", "Baz"], 
    "count": 3 
} 

你可以請求該子資源爲GET /api/v1/account/names/count

{ 
    "count": 3 
} 
1

我認爲最好的方法是c將這兩個請求合併爲一個並返回條目的數量,例如在響應的頭部中,以確保條目和它們的計數在同一時間被檢索。

+0

對不起,我接受BGRs的答案 - 它是一樣的,但更詳細一點... –

相關問題