私はASP.NET Web APIを初めて使用しています(APIはまったくありません)。私の質問は、ASP.NET MVCでViewModelsに似たようなものがあるかどうか(私はAPIで推測するとViewModelは呼ばれません)、またはDataAccessレイヤーからデータベースモデルを使用する必要がありますか?ASP.NET Web API 2 ViewModels?
1
A
答えて
1
私の質問であるのviewmodelsに似たものがあれば
はい、ありますが、MVCと同じです。 ViewModels
という名前は、DataModel
やModel
やDTO
のように多くの名前で呼ばれていても問題ありません。しかし本質的には、いかなる状態も持たないか維持していないData Transfer Object (DTO)
です。
もう一度、対応するエンティティ用に個別のビューモデルを用意する必要があります。データ検証ロジックをモデルオブジェクトに含める必要があります。どのような特定のデータをクライアントに転送するかについて、実際のエンティティより抽象化のレイヤーを追加します。
1
あなたは確かにWebAPIのビューモデルを持つことができます。好きなオブジェクトをAPIメソッドから返すことができます。
実際には、データアクセスオブジェクト、特にフレームワーク生成オブジェクトに付加される余分なプロパティをシリアル化したくないので、APIシナリオでビューモデルを特に返すことをお勧めします。 APIレスポンスに簡単なPOCOを使用すると、クライアントが受け取った結果データを完全に制御できます。
0
ここでの選択は、デザインとアプリケーションの複雑さによって異なります。ドメインモデルとビジネスモデルをマッピングするための開発コストはわずかです。しかし、私は次のような理由のためのあなたのAPI層のためのビューモデルを作成するお勧めします:
- ドメインモデルが変更された場合それはあなたのAPI
- の明示的な契約を定義し、それはあなたのユーザー に影響を与えません。
- あなたのドメイン層影響を及ぼすことなく、バージョン、あなたのAPIをすることができます
関連する問題
- 1. ASP.NET Web APIを2
- 2. ASP.Net Web API 2クライアント
- 3. AngularとAsp.net Web Api 2トークン
- 4. ASP.Net Web API 404エラー2番目のAPI
- 5. ASP.NET Web API 2:ExceptionLoggerと例外ハンドラ
- 6. asp.net web apiでIonic 2アプリを認証
- 7. resolver with angular4 in ASP.NET Web Api 2
- 8. ASP.NET Core 2 WEB API - 依存性注入
- 9. ASP.NET Web Api 2のラジオボタン、ドロップダウンリスト、チェックボックスC#
- 10. viewmodels内のMVC3 ASP.NETオブジェクト?
- 11. ASP.NET MVCのViewModelsの検証
- 12. ASP.NETのWeb API
- 13. ASP.NET Web APIログインバウンドリクエストコンテンツ
- 14. Asp.net web API
- 15. Asp.Net Web Apiマルチパラメータパラメータ
- 16. asp.net web api documentation
- 17. asp.net web api - オブジェクトをWeb APIに投稿
- 18. ASP.NET MVCでAPIのViewModelsを再利用していますか?
- 19. ASP.NetのWeb API - キャッシュ
- 20. ユニットテストのASP.NET Web API
- 21. Asp.net Web API設定
- 22. 別のプロジェクトのASP.NET MVC 3 ViewModels?
- 23. ASP.NETのWeb APIにパラメータを渡す2 OData v4 REST API
- 24. ASP.NET Web APIとMonoDroid
- 25. ASP.NET Web APIのダウンロードテキスト
- 26. ASP.NET Web APIとUrlDecode
- 27. ASP.NETのWeb API CacheControl
- 28. 404 ASP.NETのWeb API
- 29. ASP.NET MVCのWeb API
- 30. ASP.NET Web API認証
素晴らしい点と多分OPが探していた答え。 'ViewModel'は実際にはユーザーに公開されているデータスライスの別の名前です。 – axlj
@Rahulどのように私はそれらを呼び出す必要がありますか? BindingModels? – john
@john、これは本当に問題ではありません – Rahul