web-dev-qa-db-ja.com

REST部分的に成功したAPI応答

一括処理タスクを実行するAPIがあります。あるリソースの命名を行うとしましょう。

7つのリクエストをまとめて渡しましたが、そのうち5つは正常に更新され、2つは失敗しました。

私の質問は、応答をどのように処理するかです。 HTTPでは、成功とエラーの両方を同時に返すことはできません。

部分的に成功したHTTPコードがありますが、すべてのリソースの個別の応答を一度に返す必要があります。とにかくそれができることはありますか?

9
bandi shankar

Httpステータスには207 MULTI-STATUSを使用できます。マルチステータス応答は、複数のステータスコードが適切である可能性がある状況で、複数のリソースに関する情報を伝達します。

デフォルトのマルチステータス応答本文は、「multistatus」ルート要素を持つ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
    }
}