2017-08-01 48 views
1

我有一個API來完成一些批量處理任務。假設它確實命名了一些資源。部分成功的REST API響應

我批量傳遞了7個請求,其中5個更新成功,2個失敗。

我的問題是如何處理響應。使用HTTP,我無法同時返回成功和錯誤。

有一個部分成功的HTTP代碼,但我需要立即返回所有資源的個別響應。無論如何,我們可以做到嗎?

+2

實際上是無限的方式。根據您的具體情況,這是您需要自行設計的一項設計決策。 – Adrian

+0

這不是一個Go問題,它是一個HTTP/API問題。你可以用無數的方式處理這個問題,最好的取決於你的需求和可能的口味。 – Flimzy

回答

3

您可以使用HTTP狀態 207多態的多狀態響應傳達有關情況多的資源在多個狀態代碼可能是適當的信息。

默認的多狀態響應主體是一個帶有'多態'根元素的HTTP實體。其他元素包含方法調用期間生成的200,300,400和500系列狀態碼。

可以有響應對象的數組響應的主體內並且這些對象可以具有它自己的狀態碼

HTTP 207

{ 
    "data": [ 
     { 
      "messgage": "success", 
      "resource": { 
       "foo": "bar", 
       "id": "1d1" 
      }, 
      "status": 200 
     }, 
     { 
      "messgage": "Requested resource or subresource not found ", 
      "resource": null, 
      "status": 404 
     }, 
     { 
      "messgage": "success", 
      "resource": { 
       "foo": "bars", 
       "id": "1d2" 
      }, 
      "status": 200 
     } 
    ], 
    "metadata": { 
     "failure": 1, 
     "success": 2, 
     "total": 3 
    } 
} 
+0

你能舉個例子嗎? –

+0

@bandishankar請檢查這個例子,它沒有涵蓋所有的可能性,但作爲一個基本的樣本 –