RESTfulなWebサービスにおいて「指定したIDでリソースを新規作成するか、既に存在するのであればエラーとしたい」という場合どうするのが一般的でしょうか。人力検索はてな人力検索はてなモバイル版を表示しています。PC版はこちらRESTfulなWebサービスにおいて「指定したIDでリソースを新規作成するか、既に存在するのであればエラーとしたい」という場合どうするのが一般的でしょうか。いった受け答えをしたい場合です。以下のようなものを考え、それぞれ疑問点を付記しました。すべきなのでしょうか。(POSTパラメータとしてid=foo)そもそもPOSTで作成するリソースのIDを指定してもいいのでしょうか。/user/foo重複IDをエラーとするので、リソースを更新できないことになってしまいます。/user/foo?new=onパラメータを付記することで、「既にリソースが存在する場合はエラーにして欲しい」とするものです。べき等性のを考えると疑問があります。既存のパターンや落とし所などあれば教えていただきたいです。▽最新の回答へ▽1●oil999●100ポイントRESTfulなWebサービスというのはオープンな(インターネットに対して開かれた)サービスのことで、リソースというのがファイルシステム上のサブディレクトリやファイル、またはデータベースの物理テーブルのようなものを生成するという意味であれば、そもそも論として、POSTでリソースを新規作成指示してはなりません。いうのは、サイバー攻撃として新規リソース作成要求をかけられてしまうと、Webシステムに膨大な負荷がかかるためです。オープンなWebサービスにおいて新規リソース作成要求をかけたいなら、SSL通信が大前提です。次に、クライアント証明書を送るなり、OAuthを利用するなりして、クライアント認証を行う必要があります。ここまでクリアしたら、あとはPOSTでIDを送ることになります。ご質問にある2の方法が妥当でしょう。リソースが存在したらエラーを返すのが前提の処理なら、4にするのは回りくどい気がします。taketyanさんのコメントありがとうございます。サービスといってもクローズドなものなので問題無いです。接続を前提としています。認証については、社内からしか使われない前提なので、パラメータを利用した簡単な認証を行っています。は回りくどい、というご意見ありがとうございます。参考にさせていただきます。結論から言うと、2か3がよく、1や4も場合によってはOKだ思います。