0

私は次の状況に直面しています:

Post多対多の関係を介してオブジェクトにリンクされているオブジェクトがありCommentます。a には、「トップ」としてマークされPostた最大 2 つの s を含めることができます。Comment

投稿を一覧表示する機能を提供する API を公開する必要があります (投稿の詳細ビューを表示するだけでなく、これは問題ありません)。問題は、 aPostが大量のComments を持つ可能性があり、この表現を表示していないことです。

[{
   title: "Lorem ipsum",
   ....
   comments: [{
          "author": "...",
          "comment": ".....",
          "top": false
         }, ... // repeat a few thousand times
   ]
},...
]

ただし、この API の消費者の大部分は、後でトップ コメントを直接表示したいと考えているため、この表現を公開することを考えています。

[{
   title: "Lorem ipsum",
   ....
   topComments: [{
          "author": "...",
          "comment": ".....",
         }, .... // repeat once more if needed
   ]
},...
]

ここでは、/posts/ID_OF_POST/comments からアクセスできるすべてのコメントを表示しないことを選択しますが、「実行時」にtopCommentsプロパティ (コード内の元のオブジェクトにはありません) を計算し、次のようにマークされたコメントを表示します。上

ビジネス ロジックを使用して計算し、表されるオブジェクトに存在しないプロパティを公開することは許可されていますか? numberOfComments後で新しい計算プロパティを追加したい場合はどうすればよいですか?

回答ありがとうございます

4

2 に答える 2

1

はい、許可されています。「一時的」または「仮想」プロパティと呼ばれます。

Symfony Framework では、このようにできます。

お役に立てれば !!

于 2016-12-07T13:26:25.360 に答える
1

ビジネスロジックを使用して計算することは許可されていますか?

もちろん。

表現されたオブジェクトに存在しないプロパティを公開しますか?

別の表現を返すのではなく、別のリソースを使用してトップコメントのコレクション リソースを取得します。

GET /posts/{postId}/top-comments

完全なリストと同じ形式でコメントの配列を返しますが、上位のコメントのみが含まれます。

元のコレクションにフィルターを使用することもできます。

GET /posts/{postId}/comments?top=true
于 2016-12-07T13:01:42.827 に答える