2016-05-04 11 views
1

私はSpring HATEOASでRESTful APIを持っています。私はレベル3に固執しようとします。そして、私はそれで実行できるリソースと操作を持っています。それらのうちの1つはプロファイルリソースに関連しています。プロファイルはクローンにすることができます。そして、今私はそれを正しく行う方法を思います。クローン操作ですでに新しいプロファイルが作成されています。私は約考えていた:REST Level 3 with HATEOAS - カスタムアクションを実装する方法

  • api/profile/{id}/clone - POST。 urlには、クローン化するプロファイルのIDが含まれています。その他の必要なパラメータは、リクエストボディにあります。
  • api/profile/clone - POST。すべての情報は依頼主体にあります。

どちらが優れていますか?あるいは、両方ともこの行動を実行する適切な方法ではなく、他のアプローチを使用すべきでしょうか?

+0

...あなたのリソースへのそれぞれの新しい着信要求が新しいものを作成することを意味するもの、POSTのoperatiosがunsafedされる傾向があることを覚えておいてください、とimdepotentありませんそれは間違いなくRESTではありません。 2番目の選択肢から '/ clone'を削除してください。 – zeroflagL

+0

クローンを取り除くと、その操作がクローニングであることをどのように知ることができますか? – dragonfly

+0

これは適切なメディアタイプを持っているためです。 – zeroflagL

答えて

0

api/profile/{id}/cloneリソースにPOSTリクエストを行うことができます。それは絶対に正しいですか?

URLは動詞が含まれている場合だけ

http://www.restapitutorial.com/lessons/idempotency.html

+0

_ "それは絶対に正しい" _議論してください。正しいbtwはありません。そのシナリオで – zeroflagL

+0

は、POSTは、どちらも自分のID ... が、その場合にはURI及び第2提案のオプションがないこと適合を上PUT親リソースのルートを渡して、プロファイルから「子供」のリソースを作成するための最良の選択肢です。 .. クローン操作はプロファイル(親リソース)から行われるため、そのURIは次のようになります。 api/profile/{id}/clone - POST –

+0

質問はメソッドに関するものではなく、特にリチャードソンの成熟度モデルのレベル3に関するURL。クローンが動詞として使用されている場合(それがあると仮定することもできます)、RESTfulではありません。それが名詞として使用されていて、あなたがそれを投稿することができれば、それはコレクションでなければなりませんが、あなたはそれを読むことができないので、そうではありません。リチャードソンのモデルによれば、どちらのOPのアプローチもRESTfulとはみなされません。私は – zeroflagL

関連する問題