サブリソースのリストを含むリソースを持っているときに、どの方法がベストプラクティスであるかを知りたいと思います。たとえば、名前、ID、誕生日、リストブックなどの情報を持つAuthorリソースがあります。この本のリストは著者との関係でのみ存在します。あなたは、あなたが本を削除したいリスト サブストリストのリストからアイテムを更新/追加/削除するためのRESTデザイン
- :だから、あなたは、次のシナリオを持っていますリスト
SOLUTION 1
は、私が正しい設計されている検索し、私は複数のアプローチを発見しました。私はこれを設計する標準的な方法があるかどうかを知りたい。追加するには
- :
POST /authors/{authorId}/book/
- を更新するには:
PUT /authors/{authorId}/book/{bookId}
- を削除するには:私はこの本によってデザインは以下のメソッドを持っていると言うと思います
DELETE /authors/{authorId}/book/{bookId}
SOLUTION 2
私の解決策は、書籍のリストがオブジェクト作成者の中だけに存在し、実際のものであるために、これらの3つのことすべてを行うPUTメソッドを1つしか持たないことです著者を更新する。ような何か:
PUT /authors/{authorId}/updateBookList
(と著者のオブジェクトの内部全体を更新書籍リストを送信する)
私は私のシナリオでは、複数のエラーを見つけます。たとえば、クライアントからより多くのデータを送信し、クライアント上にいくつかのロジックを持ち、APIでさらに検証し、クライアントにBook Listの最新バージョンがあることに依拠します。
私の質問です:これを行うには反パターンですか?
状況1.私の状況では、私のAPIはデータベースではなく、別のAPIを使用しています。使用されているAPIには「updateBookList」というメソッドが1つしかないので、API内でこの動作を複製する方が簡単だと思います。それはまた正しいですか?
状況2.私のAPIがデータベースを使用するとしたら、解決1を使用する方が適切でしょうか?
また、いくつかの記事を提供できる場合は、似たような情報を見つけることができる書籍をご覧ください。私はこの種のデザインは石で書かれていないことを知っていますが、いくつかのガイドラインが役立ちます。 (例:REST API Design Rulebook)
これが実際の問題であり、宿題ではない場合は、書籍に複数の作家がいることにご注意ください。本は本当にトップレベルのリソースでなければなりません。 –
それは本当の問題ですが、私の状況では、本のリストは1人の著者にしか属しません。たとえば、著者を削除すると、それらの本はもう存在しません。 – green
今のところ。ビジネス要件が変更された場合、APIの変更を逃すリスクがあります。もちろん、その可能性がどれくらいあるかはあなただけが知ることができます。 –