問題タブ [http-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.

0 投票する
1 に答える
108 参照

ruby-on-rails-4 - coffeescript を使用してフォーム メソッドを PUT/PATCH に変更するにはどうすればよいですか?

Rails 4.2.3 を使用しています。私のコーヒー スクリプトでは、フォームの URL とアクションを次のように手動で編集しています。</p>

しかし、フォームを送信します (送信ボタンをクリックして...)

リクエスト (Mac Chrome と Firefox の両方) は、変更したメソッドではなく、method = “GET” で送信されます。PATCH メソッドを介して送信できるようにするには、何をする必要がありますか? (これは、更新アクションで必要とされるため、これを行う必要があります)。

0 投票する
1 に答える
4628 参照

json - Apache HttpClient ライブラリを使用して、JSON データを含む PATCH 要求を送信するにはどうすればよいですか?

Apache HTTP クライアント v 4.3.4 を使用しています。PATCH メソッドを使用して JSON データを URL に送信するにはどうすればよいですか? 私はこれを試しました

しかし、「req.setEntity」行で、「メソッドは未定義です」というコンパイル エラーが発生します。このリクエストでは、JSON データを名前と値のパラメーターのペアにするのではなく、そのまま送信する必要があることに注意してください。

0 投票する
2 に答える
1672 参照

json - HTTP ReST: 大規模なコレクションを更新: JSON PATCH よりも優れたアプローチ?

リストの更新を定期的に受け取る Web サービスを設計しています。この時点で、リストは単一のエンティティ ( /lists/myList) または多くのリソースを持つ実際のコレクション( ) としてモデル化でき/lists/myList/entries/<ID>ます。リストは大きく (数百万のエントリ)、更新は小規模です (多くの場合、10 未満の変更)。

クライアントは配布する Web サービスの URL とリストを取得します。例:

次に、設定どおりにリストと更新をプッシュします。Web サービス URL の背後に何らかのデータベースが存在する可能性がありますが、不明です。

私は調査してきましたが、JSON パッチ形式を使用した HTTP PATCH が最良のアプローチであるようです。

コンテキストと例: 各リストには、識別名、優先順位、および何百万ものエントリがあります。各エントリには、ID (クライアントによって決定される) といくつかのオプションの属性があります。優先度 1 と 2 つのリスト エントリを持つリスト "requiredItems" を作成する例:

更新の場合、クライアントはまずサーバー上でリストがどのように見えるかを知る必要があります。このために、リスト エンティティにプロパティ「リビジョン」を追加します。

次に、この属性を照会します。

次に、クライアントは、サーバー上のリビジョンとクライアントが認識している最新のリビジョンとの間で何を変更する必要があるかを確認し、JSON パッチを作成します。例:

質問:

  • このアプローチには、あまり使用されない HTTP 動詞 PATCH が原因で、クライアント サポートがわずかに少ないという欠点があります。HTTP の互換性 (冪等性など) を犠牲にすることなく、より互換性のあるアプローチはありますか?
  • 個々のリスト エントリを個別のリソースとしてモデル化し、PUTandをDELETE(おそらくETagand/orと共にIf-Match) 使用することはオプションのように思えます ( PUT /lists/requiredItems/entries/3, DELETE /lists/requiredItems/entries/1 PUT /lists/requiredItems/revision)。しかし、更新チェーンの途中でネットワークが切断されたときに、これらすべての操作が確実に適用されるようにするにはどうすればよいでしょうか? HTTP PATCH は複数のリソースで動作できますか?
  • リストを「バージョン管理」するためのより良い方法はありますか?おそらく暗黙のうちに、リストの更新方法も改善されますか? クライアントがリビジョン番号を決定することに注意してください。
  • でリビジョン番号を照会するのは正しいGET /lists/requiredItems?property=revisionですか? のような別のリソースにする必要があり/lists/requiredItems/revisionますか?別のリソースにする必要がある場合、アトミックに更新するにはどうすればよいですか (つまり、リストとリビジョンの両方が更新されるか、両方が更新されないか)?
  • JSON パッチで最初にリビジョン値をテストしてから、同じパッチで3更新することはできますか?10
0 投票する
3 に答える
11333 参照

sql - GoLang、REST、PATCH、および UPDATE クエリの作成

数日以来、Go REST API で PATCH リクエストを処理する方法に苦労していましたが、データを入力して正常に動作しているポインターとタグの使用に関する記事omitemptyを見つけました。UPDATEまだSQL クエリを作成する必要があることに気付くまでは問題ありません。

structはこのように見えます:

PATCH /resources/{resource-id}そのようなリクエストボディを含むリクエストを期待しています:

私のハンドラーでは、Resourceこの方法でオブジェクトを構築します (インポートを無視し、エラー処理を無視します):

さて、通常のUPDATEPUTリクエスト)の場合、これを行います(簡略化):

PATCHandタグの問題omitemptyは、オブジェクトに複数のプロパティが欠落している可能性があることです。したがって、ハードコードされたフィールドとプレースホルダーを含むステートメントを準備することはできません...動的に構築する必要があります。

そして、ここで私の質問が来ます:どうすればそのようなUPDATEクエリを動的に構築できますか? 最良の場合、設定されたプロパティを識別し、それらのSQLフィールド名を (おそらくタグから) 取得して、UPDATEクエリを作成できるようにするソリューションが必要です。リフレクションを使用してオブジェクトのプロパティを取得できることはわかっていますが、 SQL タグ名を取得する方法がわかりません。もちろん、可能であればここでリフレクションを使用することは避けたいと思います...または、そうでない各プロパティを単純に確認することもできます。nil、しかし実際には、構造体はここで提供されている例よりもはるかに大きくなります...

誰かがこれで私を助けることができますか? 誰かがすでに同じ/類似の状況を解決する必要がありましたか?

解決:

ここでの回答に基づいて、この抽象的な解決策を思いつくことができました。このSQLPatchesメソッドは、指定された構造体から構造体を構築しますSQLPatch(具体的な構造体はありません)。

次に、次のように簡単に呼び出すことができます。

Go Playgroundで確認できます。ここで私が目にする唯一の問題は、渡された構造体のフィールドの量で両方のスライスを割り当てることです。これは、最終的に 1 つのプロパティにパッチを適用したいだけで、必要以上のメモリを割り当てることになる場合があります.. .これを回避する方法はありますか?

0 投票する
3 に答える
15356 参照

c# - dotnet コアで HttpClient を使用してパッチ リクエストを行うにはどうすればよいですか?

in dotnet コアでPatchリクエストを作成しようとしています。HttpClient私は他の方法を見つけました、

Patchしかし、オプションが見つからないようです。Patchで依頼することは可能HttpClientですか?もしそうなら、誰かがそれを行う方法の例を教えてもらえますか?

0 投票する
0 に答える
1203 参照

rest - PATCH upsert リクエストを行う正しい方法

次の upsert を REST API に要求する適切な方法は何ですか?

フロントエンド アプリケーションへの最も要求の多いリターンに基づく NoSQL コレクションの構築に苦労しています。

次のドキュメントがあるとします。

要素を user.private_comments 配列にアップサートする必要があります。

https://www.rfc-editor.org/rfc/rfc6902#appendix-A.5によると、次のデータにパッチを適用する置換命令を要求できます。

問題は、この場合「$index」が不明であることです。

私が思いついた可能な解決策は、次の操作のようなものを作成することでした:

ただし、API を実装するユーザーは、PATCH 要求内で id 値を指定しないでください。この値は、受信トークンを介して既にアクセス可能であるためです。操作を次のように単純化する必要があります。

バックエンドで処理するため、「find」変数と「find_by」変数を使用しないアップサート操作の場合、「find_by」:「id」および「find」:value_from_token?

また、ユーザーがホール ドキュメントを受信しないため、ホール ドキュメントで単純な GET/UPDATE を実行できず、更新によってデータが危険にさらされます。

0 投票する
4 に答える
17164 参照

rest - PATCH が安全でも冪等でもないのはなぜですか?

PUT がある場所で PATCH が安全でない理由を理解できません。Asoべき等の部分 - リソースのフィールドを更新すると、そのフィールドは更新後に同じ値を返しませんか?