問題タブ [idempotent]

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 に答える
1397 参照

java - フォーム送信後にメッセージを表示し、べき等になる方法

データベースにレコードを挿入するフォームが送信され、操作が成功した場合、リダイレクトを実行してから、URLにいくつかのパラメーターを渡して、新しく挿入されたレコードをヘッダーメッセージ(つまり、「挿入に成功しました」)とともに表示します。 。

response.sendRedirect(yPage + "?pid=" + ipd + "&feedback=" + form.getFormFeebackSB() );

次に、次のようにjspで表示します。 <c:out value="${param.feedback}" />

操作をべき等にしたいので、転送の代わりにリダイレクトを使用します。挿入が成功した後に更新を押したユーザーを使用した場合forward、ほとんどの場合、警告ポップアップで[再試行]をクリックすると、挿入が重複していました。

その後、IT部門は、私にXSSの脆弱性があることを発見しました。

page.jsp?feedback=%3Cscript%20type=%22text/javascript%22%3Ealert%28%27xss%27%29;%3C/script%3E

だから私はこれに変更しました: <c:out value="${param.feedback}" escapeXml='true'/>

<br>しかし、FeedbackSBのいずれかがエスケープされ、ヘッダーメッセージが表示されるようになりました。

Insert was successful<br>An email was sent to Joe<br>Now Complete the XYZ Form;

送信をべき等に保ち、XSSから保護しながら、メッセージをユーザーに返す標準的な方法は何ですか?

編集:

Flash Scopeを検索して、このhttp://blog.smartkey.co.uk/2011/01/implementing-flash-scope-in​​-java-web- applications /に出くわしました 。私のアプリケーションは、フレームワーク、そのリンクで言及されているフィルターは簡単に組み込むことができ、非常に少ない労力でフラッシュスコープを実装することができました。

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

get - GET の冪等性について

私は GET HTTP メソッド、特にその冪等性について読んでいます。

これは私の理解です: GET 操作を 1 回または 100 万回 (または任意の回数) 呼び出した場合、結果は同じになるはずです。

この定義に関する私の問題はこれです。
映画のデータベースがあり、データベース内のすべてのジェームズ ボンド映画を返す GET 操作を実行するとします。
このクエリを 100 万回実行し、500,000 回目に別の誰かがデータベースに対して POST クエリを実行して、新しいボンド映画を追加したとします。
さて、GET 操作の半分は N 個の結果を返し、残りの半分は N+1 個の結果を返します。

これは、通常説明されているように、冪等性を壊しませんか? 関数の冪等性とは、基礎となるデータが変更されない限り、
何回実行されても同じ結果を返すということではないでしょうか?

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

rest - リソースを更新し、関連するオブジェクトを作成するための RESTful なアプローチ

臨床データの分析を提供するサービス用の REST スタイル API を設計しています。API を使用すると、ユーザーは患者リソースを作成できます。このリソースは、サーバー側の分析に入力データを提供します。

患者の作成は安全でも冪等でもない (サーバーが ID を割り当てる) ため、POST が使用されます。 POST Patients

患者リソースは大きくなる可能性があるため、更新可能なサブリソース (医薬品など) があります。medications の更新は、med のセット全体が置き換えられるためべき等であるため、PUT が使用されます。

臨床分析は、リクエストによってトリガーされ POST /Patients/{patientId}/analysisResultsます。または、ユーザーは、分析結果が POST /Patients 要求の応答で返されるように要求できます。これにより、追加の HTTP ラウンドトリップが節約されます。

私の問題はこれです。ユーザーは、更新 (PUT) への応答に含まれる分析結果を望んでPatient/Medicationsいます。結果を取得するために 2 回目の要求を行いたくないため、理解できます。したがってPUT Patient/Medications、Patient リソースに関してはべき等ですが、新しい analysisResults サブリソースが作成されるため、すべてのリソースに関してはそうではありません。するべきか:

  • a) PUT でこれを有効にします。
  • b) POST でこれを有効にします。
  • c) 新しい analysisResults を作成するには別の呼び出しが必要だと主張しますが、これによりエンド ユーザーの全体的な応答時間が長くなりますか?
0 投票する
1 に答える
103 参照

python - Python、type(a) がまだ A の場合に A(a) を処理する方法

この動作を模倣するクラスを作成する必要があります (数学では、listdictは「べき等」であると言います)。

だから、Aが私のクラスなら、私は書きたい

私のクラスAは次のように見える必要があると思います:

やってみる

それは動作しません !

x属性をselfにコピーしたくありません。selfをxまたは "point" xにしたいだけです。

いくつかのアイデア?ありがとう

0 投票する
6 に答える
17595 参照

http - POST がべき等でない結果 (RESTful API)

私の現在のアプローチが理にかなっているのか、それとももっと良い方法があるのか​​ 疑問に思っています。

新しいオブジェクトを作成し、サーバーにそれらのオブジェクトに ID を割り当てさせたい状況が複数あります。POST リクエストを送信するのが最も適切な方法のようです。ただし、POST はべき等ではないため、リクエストが失われ、再度送信すると 2 番目のオブジェクトが作成される可能性があります。また、API はモバイル ネットワーク経由でアクセスされることが多いため、リクエストが失われることはよくあることです。

その結果、すべてを 2 段階のプロセスに分割することにしました。

  1. 最初に POST リクエストを送信して新しいオブジェクトを作成し、新しいオブジェクトの URI を Location ヘッダーに返します。

  2. 2 番目に、指定された Location に対してべき等 PUT 要求を実行して、新しいオブジェクトにデータを入力します。新しいオブジェクトが 24 時間以内に入力されない場合、サーバーは何らかのバッチ ジョブを使用してそのオブジェクトを削除する場合があります。

それは合理的に聞こえますか、それともより良いアプローチがありますか?

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

google-app-engine - ユニークなアイテムの購入を伴うアプリ エンジン トランザクションのベスト プラクティスは?

気にしないでください:問題はクライアント側にありました.どうやら Google Chrome は、get リクエストの結果をキャッシュすることに関して、私が予想したよりも積極的です. firefox でテストすると、期待どおりの結果が得られます。この質問の削除に投票します。

ユーザーとアイテムの2つのモデルがあります。ユーザーには、ユーザーが持っている金額を示す「クレジット」プロパティがあります。アイテムには、所有されていない場合は「なし」である「所有者」プロパティがあり、所有されている場合はユーザーの ID があります。次の手順をトランザクションに入れようとしています。

  1. ID でユーザーを取得します (祖先クエリではありません)
  2. ID で項目を取得します (祖先クエリではありません)
  3. アイテムが既に所有されている場合は中止します。
  4. ユーザーが十分なクレジットを持っていない場合は中止します。
  5. ユーザーのクレジットをアイテムの価格だけ減らします。
  6. item の 'owner' プロパティをユーザーの ID に設定します。

すべてがうまくいった場合は、@ndb.transactional 装飾関数の外で、購入が完了したことをクライアントに示します。

テストするために、この関数をすばやく叩きます (購入ボタンをすばやく押すことをシミュレートします)。それに応じて、購入が完了したことを示すいくつかの兆候を受け取りますが、そのような兆候は 1 つしか期待できません。私の予想では、最初のトランザクションは成功し、他のトランザクションはステップ 3 で失敗します。ステップ 3 で失敗しない場合は、それらが一緒に開始されたと想定しますが、トランザクションの最後に 1 つのトランザクションだけがテストに合格します。更新時刻をチェックし、例外をスローするトランザクション。私の仮定は両方とも間違っているようです。

特に、クレジットを使いすぎないという意味で、私のトランザクションは「機能」しています。例外がないので、同じ購入をしたことをクライアントに何度か伝えます。

また、ステップ 3 のアボートは少し遅れてトリガーを開始しますが、最初のスパムをキャッチするには十分ではありません。

私の誤解は何ですか?

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

ios - ユーザーが消耗品を購入したかどうかを確認する方法は?

まず、皆さんに感謝します。

前提条件:アプリケーションで消耗品を提供しています。 製品:

  1. リスト項目
  2. ユーザーは iap でアイテムを購入します。
  3. アプリケーションがupdatedTrancactions (Transaction) を受け取る前に、ネットワークが切断されました。

したがって、サーバーには受信を確認するためのデータがありません。ユーザーも「仮想通貨」を手に入れることはできません。

この問題を解決する方法を誰か教えてくれませんか、またはヒントを教えてください。どうもありがとう。

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

rest - REST内のPUT操作のべき等要件の範囲は何ですか?

次のようにJSONにシリアル化するオブジェクトがあると想像してみましょう。

ここで、このオブジェクトを編集するhttp://absoluteTruth.foo/ {id}(PUT)URIがあると想像してください。次の内容を含むメッセージ本文で呼び出す場合:

(おそらく)他の2つの値を変更しようとする要求に直面した場合のべき等の要求は何ですか?一方では、上記のPUTリクエストにより、次のようにシリアル化されるオブジェクトが生成されるはずです。

そうすれば、他の誰かが何をしても、私のPUT操作は常に同じ出力になります。残念ながら、これにより、エンドユーザーは、GETを実行し、受信したデータを変更して、返送する必要があります。(Rich Hickeyは、さまざまなフィールドの更新を完了したことを警告する場合があります。)一方、次の結果になる可能性があることがわかります。

「Status」と「Looks」の値の変更は、「Name」パラメーターのみを指定して呼び出された場合のPUTの副作用には含まれないと言えます。ただし、その後のhttp://absolutetruth.foo/ {id}(PUT)の呼び出しから返される内容は、たとえば、誰かがMichael nee'Mikeの見た目をさらに高く評価するために立ち寄った場合、時々変わる可能性があります。

これはそうではないが、私は恐ろしい質問だと思うが、2616を含む私が読んださまざまなRFCは、その点で不明確である。{"Name": "Michael"}を使用したPUTtingは、他のすべての値を平坦化するのではなく、そのままにしておけば十分にべき等であると考える傾向があります。信頼できる情報源で決定的な答えを持っている人はいますか?

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

python - PyList_GetItem はべき等ではありません

私はSwigを試していて、それぞれ次のCコードとインターフェースを持っています:

適切にコンパイルされ、拡張モジュールを正常にインポートできます。実際、変数 a を [{1:1},{2:2}] と定義して、初めて example.test(a, 0) を実行すると、適切に {1,1} が返されます。a を Python シェルに入力すると、期待どおり [{1:1},{2:2}] が返されます。example.test(a,0) を再試行すると、セグメンテーション違反が発生します。なぜこれが起こっているのですか?