シナリオを考えてみましょう。認証されていない不明なユーザーがnerddinnersのリストを見て、特定の夕食会に行き、名前と電子メールを入力して[出席]をクリックします。これにより、2つの結果が得られるはずです。ユーザーを作成し、そのユーザーのDinnerAttendRequestを作成します。ユーザーには、参加したいディナーのprog言語プロパティに設定されたFavProgLanguageというプロパティもあります。
APIと通信する単一ページのJavaScriptアプリであると仮定すると、2つのアプローチが思い浮かびます。
1)クライアントで、ユーザーFavProgLanguageを設定してから、名前、電子メール、およびfavproglanguageを指定して/userにPOSTしてユーザーを作成します。作成したUserIdとPOSTをDinnerIdとUserIdとともに/DinnerAttendRequestに使用して、DinnerAttendRequestを作成します。
2)Name、email、dinnerIdを使用して/ somenameにPOSTし、サーバーでdinnerIdを使用してユーザーのfavproglanguageを入力します。ユーザーを作成し、useridを使用してDinnerAttendRequestを作成します
最初のアプローチはより自然でRESTfulに見えますが、favproglanguageを計算するロジックが少し複雑な場合、すべてのAPIコンシューマーはそのロジックを実装する必要があり、2番目のアプローチではコードがサーバーに1回だけ書き込まれます。
どちらがより良いアプローチですか?2番目のアプローチはRESTfulですか?