HTTPはまさにあなたのシナリオに202のステータスコードを定義しています
202受理
要求が処理のために受理されたが、処理は完了していません。要求が実際に処理されたときに許可されない可能性があるため、要求は最終的に実行されるか、または実行されない可能性があります。このような非同期操作からステータスコードを再送信する機能はありません。
202応答は意図的にコミットされません。その目的は、サーバへのユーザエージェントの接続がプロセスが完了するまで持続することを必要とせずに、サーバが何らかの他のプロセス(おそらく1日に1回だけ実行されるバッチ指向のプロセス)の要求を受け入れることを可能にすることです。このレスポンスで返されたエンティティは、リクエストの現在のステータスとステータスモニタへのポインタの表示、またはユーザがリクエストが実行されると予想できる何らかの見積りを含めるべきです(SHOULD)。
出典:HTTP 1.1 Status Code Definition
これはあなたが要求が完了していないと、エンティティがまだ作成されていないことを示すされていることを除いて、作成された201と同様です。あなたのレスポンスには、 "order request"を表すリソースへのURLが含まれているので、クライアントはこのURLを通じて注文のステータスを確認できます。
より直接あなたの質問に答えるために:あなたはそれを作る前に、あなたは千里眼のために求めているので、要求は、成功するかどうかを「テスト」に方法はありません。
今後リクエストを試みるときに発生する可能性のある技術的な問題の範囲を予測することはできません。ネットワークが利用できない、サーバーが機能するために依存するデータベースまたは外部システムにアクセスできない、電源切断があり、サーバーがオフラインになっている、迷子なニュートリノがあなたのメモリに迷って0になる可能性があります1に致命的なカーネル障害を引き起こします。
リモートサービスを使用するには、他のプロセスと分離して要求が失敗する可能性があることを考慮する必要があります。
あなたの特定の問題については、サービスにトランザクション上の安全性がない場合は、そこでは何も焼くことができず、これをより現実的な方法で処理する必要があります。私の頭の上からいくつかのオプション:
あなたは彼らが実際にそれを配置することなく、任意の注文を処理するでしょうかどうかを確認することができますので、あなたの「テスト」のメカニズムを与えるためにTシャツの会社を取得します。それらを使用して注文することは、2段階の操作であり、最初の段階(その時点で作成を検証する)で注文を作成し、その後、注文を処理するよう依頼することができます成功)。
最初にクレジットカードによるお支払いを行い、ご注文を「有料」の状態に移行させてください。その後、非同期プロセスとしてTシャツサービスで注文を実行しようとします。フルフィルメントが失敗し、顧客が何か印刷物を手に入れようとしたことが分かった場合、その会社は生産準備ができていないので、注文を変更したり払い戻しをしなければなりません。
ほとんどの組織では、技術的にシンプルでビジネスリスクが低いため、2番目のアプローチを採用します。また、Tシャツのサービスが利用できないことに対処できるという利点もあります。非同期プロセスはサービスが利用可能になるまで単に待機し、その時点で注文を完了します。
もう1つのアプローチ: 'persist = false'または' ephemeral = true'の 'POST'です。 (ちょっとハッキリしていますが、 'status'の変更は必要ありません。本当に' POST'が起きたければ、再度発行してください。) – mjs