私は主にサーバーサイドレンダリングアプリケーションをやっていますが、今はクライアントサイドレンダリング用のWebApi + javascriptフレームワークを開始しています。RESTでの複雑なオブジェクトの作成
User
を作成するフォームにOrganization
のフィールドがあり、1つのトランザクションでUser
と一緒に作成されるような兆候があります。サーバー側のレンダリングを行う場合は、フォームのすべてのフィールドを持つCreateUserViewModel
を作成し、コントローラの動作はCreateUserViewModel
となり、次にCreateUserViewModel
フィールドをUser
とOrganization
エンティティフィールドにマップします。
しかし、私がREST APIを作成している場合、ViewModelにはフォームからのすべてのフィールドが含まれていますが、これはコントローラのアクションメソッドのパラメータですか?または、2つの別個のメソッドPOST: /users
i POST: /organizations
をクライアント側で入力フィールドからUser
とOrganization
にマッピングし、それらを別々に呼び出す必要がありますか? 2番目のオプションが正しい方法であれば、どうすればそれをトランザクションにすることができますか?
"2番目のオプションが正しい場合は、どうすればトランザクションにすることができますか?"トランザクションが必要な場合は、2番目のオプションが正しい方法ではありません。しかし、あなたはそれがトランザクションである必要があるかどうかを検討するかもしれません。詳細を述べることは難しいですが、ユーザーが組織のメンバーになることが予想されるため、おそらくトランザクションを使用せずに組織を最初に作成することができます。 – Joe
これはトランザクションでなければなりません。ユーザーは登録時に組織の詳細を入力する必要があります。別の組織なしで存在することはできません。私の仕様ではなく、クライアントが望む方法です。 – Aleksa
@Alexsaの場合、組織の詳細は基本的にデータモデル内のユーザーの属性であることを暗示しているようです(つまり、同じ組織に1人以上のユーザーがいない)。この場合、ユーザーと組織の別々の呼び出しの2番目のオプションは正しい方法ではありません。 – Joe