我正在寫一個WCF Rest API,爲實體提供CRUD功能,如學生。下面是它是如何定義的:WCF REST API記錄的部分更新
class Student
{
Guid Id;
string Name;
string LastName;
string Age;
DateTime DOB;
}
我的服務合同是這樣的:
class StudentService
{
[WebInvoke(Method = "POST")]
public void Add(Student student)
{...}
[WebInvoke(Method = "PUT")]
public void Update(Student student)
{...}
[WebGet()]
public void Get(string Id)
{...}
}
現在的事情是,在更新一個學生記錄的客戶端可能無法提供完整的數據。對於例如它可以提供Id和DOB,但不提供姓名和姓氏。 Id是必填字段。我需要知道在這種情況下最好的方法/設計是什麼?
我可以從數據庫中獲取現有記錄,然後根據需要執行比較。這種方法的問題是,我無法知道用戶是否真的想將字段更新爲空。再次,比較似乎不是一個整潔的設計。有任何想法嗎?
我可能在系統設計上缺少一些東西,但更新意味着客戶端已經有了一個最近的學生記錄。你應該在你的API中有一個「GET」方法來檢索學生記錄。用戶將更新當前記錄中的信息併發送完整記錄。因此,如果用戶只更改了DOB,它仍然會有當前的ID,名稱等...除非您正在執行某種更改跟蹤,否則無需執行比較。 –
@KevinJunghans,是的,我也有GET方法。 (也更新了問題)。但問題是,由於我不會使用服務,因此我無法強制客戶端在更新之前調用GET。它的一種功能,只需更新您提供的字段即可更新。 – Obaid