私はRESTfulなAPIを実装する途中ですが、変更できないデータが存在するかどうかについて 'コミュニティで受け入れられた'動作が不明です。たとえば、私のAPIには、ファイルのバイナリデータやそれに関連するいくつかのメタデータなど、作成後に変更できないいくつかのフィールドが作成された 'ファイル'リソースがあります。さらに、「ファイル」には説明が書き込まれ、タグが関連付けられます。RESTfulなAPI設計:更新(PUT)内の変更不可能なデータはオプションであるべきですか?
私の質問は、これらの「ファイル」リソースのいずれかへの更新を行うことに関係しています。特定の 'ファイル'のGETは、ファイルに関連付けられたタグ&のタグとファイルのバイナリデータをすべて返します。特定の 'ファイル'リソースのPUTに '読み取り専用'フィールドが含まれている必要がありますか?私は、どちらかの方法でコード化できることを認識しています:a)PUTデータに読み取り専用フィールドを含め、元のものと一致するかどうかを確認するか、エラーを出します。b)PUTデータの読み取り専用フィールドの存在を無視します。ロジックが変更を無視するため、一致しないか、または存在しない場合、エラーを発行することはありません。
どちらかといえば受け入れられるようです。読み取り専用フィールドを無視する2番目の方法は、コンパクトにすることができます。なぜなら、APIクライアントは、必要に応じて読み取り専用データの送信をスキップできるからです。彼らが何をしているのかを知っている人には良いようです...
ちょうど注記:Roy Fieldingは、PUTは部分的な更新には使用されないと言います。 http://tech.groups.yahoo.com/group/rest-discuss/message/17421部分的な更新については、POSTを使用してください。 PUTは、指定されたURLのリソースを置換*するために使用されます。参照:http://stackoverflow.com/a/2443344/48082 http://stackoverflow.com/a/2391954/48082 – Cheeso