我正在嘗試構建一個(大部分)寧靜的服務,但我正在努力處理設計的一部分。我們揭露的各種資源,在服務器端的樣子:將驗證信息添加到REST響應
public class Thing1 : Resource {
public string ABC {get;set;}
public string DEF {get;set;}
}
凡Resource
是一個基類:
public class Resource {
public List<Link> Links {get;set;}
}
凡Link
S,反過來,只要綁定rel
S和uri
秒。這樣,每個Resource
都鏈接到其他資源等,並且消費者可以瀏覽服務提供的各種資源。
一些(但不是全部)資源是可編輯的,所以消費者將檢索資源,對其進行更改,然後PUT
這些更改回服務。當然,在這一點上,服務將按需要執行驗證(並處理任何併發問題)。
但是,如果消費應用程序甚至在嘗試PUT
請求之前就可以預先執行一些驗證,就可以減少不必要的往返行爲(與我們可能使用JavaScript驗證的方式大致相同即使服務器必須重複它)。
所以,我想在我們的回覆中包含一些驗證信息,以便消費應用程序知道(例如),ABC
不能超過6個字符。應該注意的是,目前,消費者可以使用相同的資源類別(它們在一個單獨的程序集中,以及適當的類別) - 添加屬性(例如System.ComponentModel.DataAnnotations.RequiredAttribute
)感覺不對,因爲然後消費應用程序最終與他們在共享程序集時的驗證一樣,而不是現在的現在的。
還有一些驗證是基於更多策略,其中實際驗證屬性直到運行時才能計算。
tl; dr;
什麼是在REST響應中包含「有用的」驗證信息以及實際資源的好設計,以便消費應用程序可以創建良好的用戶體驗?