私は現在、モバイルアプリからHTTP経由でアクセスしているAPIを構築しています。次のシナリオを想定します。モバイルアプリケーションは登録データを含むwww.example.com/customersにHTTP POSTリクエストを送信し、APIはデータベースに接続し、新しいレコードを挿入して200 OKといくつかのユーザー固有の登録データを返します。スポーティーな(モバイル)接続とAPIを扱う
ここで、データベースの挿入がうまくいったとしますが、200 OKレスポンスはモバイルアプリには行かなかったとします。接続/ユーザーがモバイル接続を無効にしたことはありません。同じPOSTリクエストを繰り返すことは明らかですそのユーザー名/ IDを持つユーザーが既に存在するためです。どうすればこの問題を解決できますか(同じメカニズムを使用してAPIの他の機能を保護します)?
また、私は上記のシナリオについて考えていましたが、ウェブサーバーとデータベースサーバーの間に同じ問題が発生する可能性がありますか?例:PHPスクリプトはmysql_connect()を呼び出して(リモート)データベースに接続し、mysql_query()への呼び出しが行われます。データベースサーバがクエリをコミットしたことがありますが、何らかの理由でPHPスクリプトが接続不良などのためにdb接続から「OK」を受け取ったことはありませんか?
最初に、モバイルであるという事実を無視してください。トランザクションをどのようにアトミックにするかを考えてください。つまり、リモートデバイスが完了ステータスを制御していることを意味します。日。 – KevinDTimm
@KevinDTimmあなたのご意見ありがとうございます。取引は私の問題ではありません。おそらく、私はあまり明確ではなかったでしょう。ある時点で、トランザクションは正常に完了し、リモート側は通知されることになっています。これが失敗した場合の対処方法は? (TCPレベルで)トランザクションが完了するのは重要ではないので、データベースの内容は変更される可能性が高いですが、誰にも通知されませんでした。 – biggiesmalls