JSON Patch
RFC 6902 JavaScript Object Notation (JSON) Patch
https://www.rfc-editor.org/rfc/rfc6902.html
https://tex2e.github.io/rfc-translater/html/rfc6902.html
JavaScript Object Notation (JSON) Patch
概要
JSON Patchは、JavaScript Object Notation (JSON) ドキュメントに適用する一連の操作を表現するための JSON ドキュメント構造を定義します。HTTP PATCH メソッドでの使用に適しています。
このようなパッチドキュメントを識別するために、「application/json-patch+json」というメディアタイプが使用されます。
本メモのステータス
これはインターネット標準化過程文書です。
本文書はインターネット技術タスクフォース(IETF)の成果物であり、IETFコミュニティの合意を反映しています。公開レビューを経て、インターネット技術運営グループ(IESG)により公開が承認されました。インターネット標準に関する詳細は、RFC 5741のセクション2を参照してください。
本文書の現在のステータス、正誤表、およびフィードバックの提供方法については、http://www.rfc-editor.org/info/rfc6902 を参照してください。
著作権表示
Copyright (c) 2013 IETF Trustおよび文書の著者として特定された人物。すべての権利は留保されています。
本文書は、BCP 78および本文書の発行日時点で有効なIETF TrustのIETF文書に関する法的規定(http://trustee.ietf.org/license-info )に従うものとします。これらの文書には、この文書に関するお客様の権利と制限事項が記載されていますので、よくお読みください。この文書から抽出されたコードコンポーネントには、トラスト法務規定のセクション4.eに記載されている簡易BSDライセンスのテキストを含める必要があり、簡易BSDライセンスに記載されているとおり、保証なしで提供されます。
1. はじめに
JavaScript Object Notation (JSON) RFC 4627 は、構造化データの交換と保存のための一般的なフォーマットです。HTTP PATCH RFC 5789 は、ハイパーテキスト転送プロトコル (HTTP) RFC 2616 を拡張し、リソースへの部分的な変更を行うためのメソッドを提供します。
JSON Patch は、対象の JSON ドキュメントに適用する一連の操作を表現するためのフォーマットです (メディアタイプ "application/json-patch+json" で識別されます)。HTTP PATCH メソッドでの使用に適しています。
このフォーマットは、JSON ドキュメント、または同様の制約を持つデータ構造 (つまり、JSON 文法を使用してオブジェクトまたは配列としてシリアル化できるもの) に対して部分的な更新を行う必要がある他のケースでも有用です。
2. 表記規則
本ドキュメントにおけるキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、「OPTIONAL」は、RFC 2119 RFC 2119 に記載されているとおりに解釈されるものとします。
3. ドキュメント構造
JSONパッチドキュメントは、オブジェクトの配列を表すJSON RFC 4627 ドキュメントです。各オブジェクトは、対象となるJSONドキュメントに適用される単一の操作を表します。
以下は、HTTP PATCHリクエストで転送されるJSON PATCHドキュメントの例です。
PATCH /my/data HTTP/1.1
Host: example.org
Content-Length: 326
Content-Type: application/json-patch+json
If-Match: "abc123"
[
{ "op": "test", "path": "/a/b/c", "value": "foo" },
{ "op": "remove", "path": "/a/b/c" },
{ "op": "add", "path": "/a/b/c", "value": "foo", "bar" },
{ "op": "replace", "path": "/a/b/c", "value": 42 },
{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
]