2017-04-07 53 views
0

我已經構建了一個API,可在用戶提交內容搜索時一次傳送實時數據。我希望通過在收到內容時向用戶提供API內容,而不是在顯示之前等待接收所有數據,將此API提升到新的水平。構建API

這是怎麼回事?

+0

你的需求與分頁不同 – rrmerugu

+0

我們從每個用戶搜索的多個來源提取數據直接連接到t他爲這些來源的刮板,我們顯示內容爲每個刮板完成內容檢索。我最初希望在API中模仿這一點,這顯然與傳統的分頁有很大不同 - 希望能夠澄清。 – JBear

+0

AJAX調用如何? –

回答

0

我認爲應用它的更好方法是在查詢中設置限制。例如,如果數據庫中有1000條記錄,則一次檢索所有數據需要時間。因此,如果用戶搜索單詞「apple」,則最初發送限制爲10的數據庫請求。並且,您可以在前端設置分頁或滾動功能。如果用戶單擊下一頁或滾動您的頁面,則可以再次發送數據庫請求以提供另一個限制10,以便數據庫讀取操作不會花費更多時間來讀取有限的數據。在Django做

+0

基本上就像啓動其他數據的多個調用呢? – JBear

+0

是的。設置搜索結果的限制。結果呈現後,您可以再次基於用戶滾動/分頁啓動呼叫。 –

0

從你的解釋

我們從每個用戶的搜索多個來源拉動我們的數據。 由於每個刮板完成內容檢索,我們顯示 的內容與這些源的刮板直接相連。我原本是想在API中模仿這一點,這顯然與傳統的分頁不同,這與 不同 - 希望能夠澄清。

所以您在API中,您可以從用戶要

  1. 取查詢
  2. 在帶電刮刀
  3. 取回數據給用戶時,刮刀把工作幹完! (如果我錯了指正)

我的回答

這可能會覺得有點複雜,但是這是我能想到的最好的一個。

1.當用戶提交查詢: 1.啓動到celery queue現場刮刀(照顧優先)。 2.一旦隊列完成後,通過sockets(這是Facebook或任何網站向用戶發送通知的方式,返回給用戶,但在你的情況下,你會發送結果html數據在套接字中。
3.既然你將擁有的數據已經搬進你颳了分貝,你可以將它分頁像正常分貝。

但是,這種方法給你幾秒鐘的滯後或一分鐘回覆用戶,同時你保持用戶在UI前面忙碌