我們有一個REST API,作爲其中的一部分,我們向客戶端提供了幾個API來繪製分析報告。一些非常大的查詢可能需要5到10分鐘才能完成,並可以返回50mb到150mb範圍內的響應。具有較大結果集的API響應
目前,客戶只是等待迴應。我們不確定這是否是最佳做法,或者是否應以其他方式處理此類複雜/大型查詢響應。請提供有關當前最佳做法的任何建議?
注意:API將由構建大型報告的自動化進程調用,因此我們不確定標準分頁是否有效或可取。
我們有一個REST API,作爲其中的一部分,我們向客戶端提供了幾個API來繪製分析報告。一些非常大的查詢可能需要5到10分鐘才能完成,並可以返回50mb到150mb範圍內的響應。具有較大結果集的API響應
目前,客戶只是等待迴應。我們不確定這是否是最佳做法,或者是否應以其他方式處理此類複雜/大型查詢響應。請提供有關當前最佳做法的任何建議?
注意:API將由構建大型報告的自動化進程調用,因此我們不確定標準分頁是否有效或可取。
如果您需要處理長時間運行的任務,從客戶端的角度來看,最好如下進行異步處理。
客戶端發送一個POST請求,服務器創建一個新的資源(或者可以開始立即後臺處理)並返回HTTP 202接受任務的表示(例如狀態,開始時間,預計結束時間等)以及Content-Location標題中的任務URL,以便客戶端可以跟蹤它。
客戶端可以向指定的URL發送GET請求以獲取狀態。服務器可以返回以下響應。
尚未
服務器返回HTTP 200 OK與任務的資源一起,以便客戶端可以檢查狀態。
完成
服務器返回HTTP 303查看其它與顯示任務結果的資源的URL Location頭。
錯誤
服務器返回HTTP 200 OK與描述錯誤
您可以以異步方式或使用批處理技術做這個任務的資源。 – thefourtheye