問題タブ [json-patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - JSON-PATCH 形式の使用
RFC6902 で規定されている JSON-PATCH 形式について質問があります。
私が理解しているように、このフォーマットは PATCH リクエストに適しています。応答でこれを使用する方法はありますか?部分的なコンテンツ コードを使用している可能性がありますか? PATCH を使用して要求した操作がリソースに追加の変更を引き起こす可能性がある特別なケースがあります。リソース自体が巨大であるため、完全な表現を送り返したくありません。
RFC で議論されている形式は、どの程度広く使用されていますか?
c# - json-patch は restclient でサポートされていますか?
RestSharp の RestClient でPOST メソッドと JSON-Patch 操作 (RFC を参照してください: https://www.rfc-editor.org/rfc/rfc6902 ) を使用する際に問題が発生しています。AddBody() には、次のようなものが含まれています。
エラーが出ます。json-patch
本体で操作を渡す方法がわかりません。私はできる限りのことを試しました。この問題の解決策はありますか?
c# - Ramone で json-patch を使用すると、サポートされていないメディア タイプ エラーが発生する
更新: Ramone プロジェクトをダウンロードして自分のプロジェクトに追加し、デバッガーでアプリケーションを再度実行しました。エラーを以下に示します。
public MediaTypeWriterRegistration GetWriter(Type t, MediaType mediaType) { ...
CodecEntry エントリ = SelectWriters(t, mediaType).FirstOrDefault(); =>この行はエラーをスローします
... } CodecManager.cs でエラーが発生します。json-patch メディア タイプを認識しない理由を理解しようとしています。ライターが正しく登録されていない可能性がありますか?私はそれを調べています。問題がわかったら、教えてください。あなたはライブラリの作成者であるため、問題を簡単に把握できます。問題を見つけるには、すべてのコード ファイルとメソッドを確認する必要があります。ありがとう!
Ramone ライブラリが json-patch 操作をサポートしていることを知って興奮しましたが、試してみると、次のエラーが発生しました。
415- サポートされていないメディア タイプ
これは、RestSharp を使用したときに発生するエラーと同じです。RestSharp は json-patch とエラーをサポートしていないのではないかと考えたので、Ramone lib を試すことにしましたが、それでも同じエラーが発生します。Postman を使用して同じコマンドを実行すると機能しますが、C# でプログラムを使用して実行すると、サポートされていないメディア タイプ エラーがスローされるため、エンドポイントに問題はありません。これが私のコードです:
エンドポイント情報は、http: //developers.box.com/metadata-apiで入手できます。
次の記事の json-patch セクションを参考にしました。
http://elfisk.dk/Ramone/Documentation/Ramone.pdf
ちなみに、Patch() メソッドを試してみましたが (上記の参照記事に示されているように)、「メソッドは許可されていません」という結果になったので、動作しているように見える Put() メソッドを使用しましたが、json-patch 操作のためにエラーが発生しました。
この問題を解決するためのヘルプ、ガイダンス、ヒントは高く評価されます。よろしくお願いします。
-シャム
javascript - JSON パッチ rfc6902: 順次操作とインデックス
JSON パッチでは、同じ配列に対する後続の操作でインデックスをどのように使用する必要がありますか。たとえば、
パッチ ドキュメント (操作)
ソースのインデックスを考えると、上記のインデックスは正しいです。ただし、順番に適用すると、インデックスが正しくありません。つまり、0 番目と 1 番目のインデックスを削除すると、インデックス 2 には要素がありません。
これを処理する方法はいくつか考えられます。配列に対するすべての削除操作をグループ化し、一時構造を保持して、削除中にインデックスの変更を保持/操作します。または、変化する値に相対的なインデックスを維持します
操作が一連のリソースの変更と見なされる場合、それは理にかなっています。
これに関する基準はありますか。私は仕様でそれについて何も見ることができません。A.4. 配列要素の削除
json - JSON Patch RFC のチルダエスケープはどのように動作するはずですか?
https://www.rfc-editor.org/rfc/rfc6902#appendix-A.14 を参照:
A.14. ~ エスケープオーダー
ターゲット JSON ドキュメントの例:
JSON パッチ ドキュメント:
結果の JSON ドキュメント:
私はこの RFC の実装を書いていますが、これに行き詰まっています。これは何を達成しようとしているのか、またどのように機能するのでしょうか?
最初の部分に対する答えが「/s を含む json キー名の参照を許可する」であると仮定すると、どのようにそれを行いますか?
json - json-patch 操作を redis キューに保存し、その一貫性を保証する方法は?
次のような JSON オブジェクトを処理する共同 Web アプリケーションがあります。
私のアプローチは、JSON ドキュメントにパッチを適用するためのjsonpatchライブラリでrfc6902 (JSONPatch) 仕様を使用することです。このようなドキュメントはすべて MongoDB データベースに保存されます。ご存知のように、最後のドキュメントは頻繁に書き込むと非常に遅くなります。
より高速で高負荷のアプリケーションを取得するために、次のようなパッチ操作のキューとして redis を使用します。
そのようなすべてのパッチ操作をキューに保存し、真夜中に cron スクリプトを実行してすべてのパッチを取得し、完全なドキュメントを作成して MongoDB データベースで更新します。
次のような破損したパッチの場合、どうすればよいかまだわかりません。
tags
配列の長さが 3 しかないため、上記のパッチは上記のドキュメントには適用されません(公式ドキュメントhttps://www.rfc-editor.org/rfc/rfc6902#page-5によると) 。
そのため、ユーザーがオンラインの場合、パッチ操作が redis キューに保存されるためエラーは発生しませんが、翌日、cron スクリプトに適用されていない壊れたパッチが原因で壊れたドキュメントが表示されます。
私の質問は、redis キューに保存されているすべてのパッチが正しく、プライマリ ドキュメントが破損していないことをどのように保証できるのでしょうか?
http - HTTP PATCHメソッドによるバイトデータの部分アップロードの記述形式
HTTP PATCH メソッドを使用して、部分的なアップロードの可能性を REST インターフェイスに追加したいと考えています。PATCH メソッドを介して既存の JSON および XML リソースを部分的に更新 (および拡張) するために使用されるJSON Patch FormatおよびXML Patch Operation Frameworkを見つけました。もちろん、パッチ命令を記述する他の方法もあります。たとえば、PATCH RFCに準拠していない JSON にパッチを適用するためのFirebase形式などです。準拠している形式を探しています。
TL;DR : バイト データのパッチをどのように記述しますか? これらのパッチ、特にデータの追加を説明するための既存の RFC または準標準はありますか?
json-patch - 配列から要素を削除するための JSON パッチ形式は何ですか?
「roles」フィールドの配列値から「roleId2」要素を削除したい次の JSON ドキュメントがあります。
その要素を削除する JSON パッチ ドキュメントを作成するにはどうすればよいですか? 次の式は有効ですか?
それとも、このように見えるべきでしょうか (ドキュメントの "roles" 値が配列であるため)。
RFC 6902を読んでも、どちらが正しいかはわかりません。RFC では次の動作について言及されていますが、ここで関連するかどうかはわかりません。
配列から要素を削除する場合、指定されたインデックスより上の要素はすべて左に 1 つシフトされます。