質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

598閲覧

[WebAPI][HTTP通信]複数のPOST通信が無事に成功したことを保証するには?

33ky-sasaki

総合スコア1

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2021/07/30 04:36

前提

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通信によりアップロード作業が完了する状況において、
それら全てが問題なく行われたことを保証するには
どのように実装すべきでしょうか。
たとえば、メタ情報と位置情報ログは無事にアップロードできたが、
何らかの理由(通信の切断など)により写真がアップロードできなかった場合、
サービスとして不完全なものになってしまいます。

全てのファイルが無事に送信されることを保証する方法をお伺いしたいです。
あるいは、無事に送信されなかった場合に、全てのアップロード動作をなかったことにするロジックをお伺いしたいです。

なにとぞ、よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

iPhoneから送信するメタ情報、位置情報ログ、写真群のデータ容量が合計何byteあるか送信し
サーバー側でそのbyte数受信できていればサーバー側から正常に受信したという結果をiPhoneへ返す
というのは如何でしょうか。

投稿2021/07/30 09:02

odataiki

総合スコア973

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

33ky-sasaki

2021/07/31 10:14

早速のご回答、大変ありがとうございます。 「事前に完了条件を伝えておく」という方法は確かに有効だと感じました。 もしよろしければお聞かせ願いたいのですが、 あえて"データ容量"を送信する理由などはございますでしょうか。 その方法であれば、単純に"写真ファイルの枚数"を伝えるだけでも十分なように感じましたが… どうぞよろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問