RESTfulな方法で考えると、POSTを使用して1回の呼び出しでリソースとそのサブリソースを作成するのは正しいですか? 私のアプリケーションでは、私はリソース/notices/{notice}
とサブリソース/notices/{notice}/photos/{photo}
を持っています。 A {photo}
は{notice}
なしでは存在しませんが、{notice}
は必ずしも写真である必要はありません。通常、通知を作成するにはPOSTを最初に行い、写真を追加するには別のPOSTを実行する必要があります。REST - 単一のPOSTでネストされたリソースを作成する
これで、写真が直接添付された通知を作成することができます。/notices/{notice}
と/notices/{notice}/photos/{photo}
を作成して、/ notices/{notice}/photos/{photo}両方のリソース(通知のためのJSON、写真のバイナリ)を記述します。私は、サブリソースのLocationヘッダーだけを返すと思います。
これは、Androidクライアントが2つのPOSTリクエストをサーバーに送信して写真付きの通知をアップロードするのを防ぐためです。 これが正しいですか?それともRESTの原則を侵害していますか?それらを別々に保ち、2つの異なる要求をすることを検討すべきでしょうか?あるいは、写真を通知とは別のものと見なすことは間違っていますか? /notices/{notice}
だけをリソースとして保存し、PUTを使用して写真を追加する必要がありますか?
どのソリューションが最適ですか?
確かに、この論理によって、エンドポイントの後のすべてがルートリソースの変更になり、したがって 'POST'の考え方が冗長になるでしょうか? (私はあなたに誤解しているかもしれませんか?) – James
理論的には、はい。/questionsは、stackoverflow.comのサブリソースとして考えることができます。しかしこれはPOSTを冗長化するものではありません。 –
私は、OPが(最も直接的な)リソースを変更していないので、ここでは「POST」の使用が賢明な選択肢であると主張しますか? 'PUT 'でリソースを作成するには、このサブリソースが既に存在することを意味しますか? – James