アプリケーションにMVCとWebAPIの両方の機能を含めることを計画しています。単純なMVCCRUDコントローラーで実装された管理サイトがあります。また、リモートクライアントから、場合によってはシングルページアプリからRESTfulAPIを呼び出す必要があります。戻り値のタイプのみが異なる非常に類似したクラスを作成することにあまり慣れていません。MVCコントローラーはビューにラップされたデータを返し、WebAPIコントローラーは単にデータをラップ解除して返します。あまり多くのコードを繰り返さずに目標を達成するための最良の方法は何でしょうか?
2 に答える
私の意見では、WebAPI を使用している場合、標準の MVC コントローラーを CRUD に使用するべきではありません。API コントローラーは CRUD 操作を処理し、MVC コントローラーはビューを返す必要があります。
この方法を使用すると、ビューにデータを表示する方法についていくつかの異なるオプションが提供されます。
伝統的
より「伝統的な」ルートに固執する場合は、MVC コントローラーからサーバー側の WebAPI コントローラーを呼び出し、モデル オブジェクトをハイドレートして、厳密に型指定されたビューを返すことができます。これを行うには、HttpClientクラスまたはWebClientクラスを使用して API 呼び出しを行い、応答を逆シリアル化します。
シングルページ
より「現代的な」ルートを試してみたい場合は、danludwig が提案したものを試して、より多くのシングル ページ アプリを構築できます。このシナリオでは、MVC コントローラーは、クライアント側のフレームワークに依存して API 呼び出しを行い、DOM を更新する HTML + JavaScript ビューを返すだけです。require +バックボーン+ノックバック/ノックアウトスタックは、開始するのに最適な場所ですが、学習曲線が少しあります。
いずれにせよ、CRUD ロジックは 1 か所だけにすべきであり、これは API に属していると思います。
1つの方法は、MVCコントローラーが強く型付けされたビューモデルを返さないようにすることです。代わりに、バックボーンやノックアウトなどを使用してApiアクションメソッドを呼び出し、DOMにデータを入力できるプレーンなHTML+JavaScriptを返すことができます。