2016-08-16 6 views
1

.NET WebAPIを使用していくつかのRESTful APIを開発しています。チームが設計しようとしている設計の決定が1つあります.WebAPIレベルで要求モデルと応答モデルを常に分離する必要がありますか?Web API 2は要求と応答を分離しますモデル

例えば、我々は、顧客のリソースを露出エンドポイントを持っている:

GET api/customers/1

POST api/customersが顧客情報を受け付ける顧客情報(CustomerResponse)を返します。 (CustomerRequest)

最初に、応答に「CustomerID」が含まれていないことを除き、2つのモデル間のすべてのフィールドが同じです。

私はこの2つのモデルを分離することで、リクエスト/レスポンスが将来異なる可能性があるため、リクエスト/レスポンスを分離することによって利益を得ることができます。検証はリクエスト・モデルでのみ行われます。しかし、今は2つのモデルを維持する必要があるため、オーバーヘッドも発生します。

そこには標準がありません。推奨されるベストプラクティスがあるかどうかを確認したいだけです。

+1

はい、私はそれらを常に分離しています。通常、これらの2つの時間は、時間が経つにつれてずっと異なります。 –

答えて

1

私はそれを分けるのが最も簡単だと分かっています。上述したように、2つは時間の経過とともに発散する可能性がある。たとえば、新しいリソースをPOSTすると、おそらくIDはなくなりますが、応答オブジェクトはIDを持ちません。うち分離することにより

、次のことができます。

  1. 活用APIフレームワークモデルの検証(すなわち、簡単にフィールドが必須およびオプションされている注釈を付けます)。どのフィールドが欠落しているかを指定するエラーを返します。

  2. あなたのルートとモデルからドキュメントを自動的に生成するレバレッジツール(私のお気に入りのもの、Swashbuckle https://github.com/domaindrivendev/Swashbuckleなど)。 要求フィールドと応答フィールドが同じモデルに束ねられていると、ドキュメンテーションが正常に表示されません。

関連する問題