2016-08-16 46 views
1

我們正在使用.NET WebAPI開發一些RESTful API。團隊試圖做出一個設計決策:我們是否總是將WebAPI級別的請求模型和響應模型分開?Web API 2分離請求和響應模型

例如,我們有一個端點暴露的客戶資源:

GET api/customers/1返回客戶信息(CustomerResponse)

POST api/customers接受客戶的信息。 (CustomerRequest)

最初,這兩個模型之間的所有字段都是相同的,除了響應包含CustomerID那裏不在請求中。

我知道將這兩種模式分開將使我們受益於隔離請求/響應,因爲它們在未來可能會有所不同。驗證僅在請求模型上進行。不過,它也會帶來開銷,因爲我們現在需要維護兩個模型。

我在那裏找不到任何標準。只是想看看是否有任何推薦的最佳做法。

+1

是的,我一直把它們分開。通常這兩者隨着時間的推移差異更大。 –

回答

1

我發現將兩者分開最簡單。如前所述,這兩者可能隨着時間的推移而發生分歧。例如,發佈新資源可能不會有ID,但響應對象會。

通過分離出來,就可以:

  1. 槓桿的API框架模型驗證(即容易註釋所需要字段和可選)。這將返回一個錯誤,指定哪個字段丟失。

  2. 利用工具(例如我的最愛之一,Swashbuckle https://github.com/domaindrivendev/Swashbuckle),它可以自動生成來自路線和模型的文檔。 如果請求和響應字段捆綁在同一個模型中,則文檔看起來不太好。