前提
iPhoneでウォーキングやサイクリング体験を記録するアプリを開発しました。
このアプリによって記録された位置情報ログ(.json)や写真群(.jpeg)は、
全てローカルに保存され後から地図上で閲覧できるようになっています。
現在は、このローカルに保存されたデータ各種をサーバ上へ送信できるようにして、
SNSのようなサービスを実現したいと考えています。
そこで今回お聞きしたいのは、
HTTP通信を用いた記録データ各種のアップロード処理についてです。
実装・処理の内容について
クライアントはSwift、サーバはDjango(PythonでWebアプリをつくるフレームワーク)による実装を試みています。
またDjango REST Framework(WebAPI作成用のDjangoパッケージ)によってAPIの機構を作成しました。
さて、記録データ各種のアップロードについてです。
まずユーザはアプリのUIを通じて、ローカルにある記録レコードを選択します。
すると次のデータがAPIを通じて送られます。
- 記録データのメタ情報: 記録日時・UUID・体験の感想など(.json)(サーバ上のDBに登録)
- 位置情報ログ(メタ情報のidとファイル名が紐づく)(.json)
- 写真群(メタ情報のidとファイル名が紐づく)(.jpeg)
なお、一度のアップロード処理において、
メタ情報と位置情報ログは1つずつ、写真群は0以上逐次的にHTTP通信により送信されます。
すなわち、最低でも2回のPOST通信が行われます。
お聞きしたいこと
上記のように複数回のPOST通信によりアップロード作業が完了する状況において、
それら全てが問題なく行われたことを保証するには
どのように実装すべきでしょうか。
たとえば、メタ情報と位置情報ログは無事にアップロードできたが、
何らかの理由(通信の切断など)により写真がアップロードできなかった場合、
サービスとして不完全なものになってしまいます。
全てのファイルが無事に送信されることを保証する方法をお伺いしたいです。
あるいは、無事に送信されなかった場合に、全てのアップロード動作をなかったことにするロジックをお伺いしたいです。
なにとぞ、よろしくお願い申し上げます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/31 10:14