リソース指向アーキテクチャに基づいてRESTfulなAPIの設定を行なっております。
今回リソースの新規作成は一律POSTによって行う想定です。
(=リソースの一意なIDの払出しはサーバサイドで実施)
この前提のもと、作成したリソースの全体更新を行う場合は、
PUTメソッドを利用すべきでしょうか、それともPATCHメソッドを利用すべきでしょうか。
PUTメソッドを利用する場合
リソースの全体更新を行う場合であればPUTメソッドが適切に思えますが、
IDの払出しはサーバでコントロールしたいため、存在しないIDが指定された場合に新規登録は行いたくありません。
存在しないIDに対してPUTが行われた時に、例えば404(NOT FOUND)等のエラーを返すことは可能ですが、
この対応が冪等性のあるPUT処理として適切ではないような気がします。
PATCHメソッドを利用する場合
更新処理であればPATCHメソッドが利用可能だと考えています。
一方でPATCHは部分更新を行うためのものであり、全体更新処理に利用するのが適切か悩ましいところです。
皆さまの知見、ご意見頂けますと幸いです。
補足:Github APIやQiita APIはPATCHを利用していますね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。