2017-04-17 78 views
0

我有一個具體的要求,我有一個像EmployeeDTO.java POJO有條件地忽略特定的屬性DTO

與下面的字段;

int employeeId; 
String Name; 
double salary; 
String createdBy; 
Date createdTimestamp; 
String updatedBy; 
Date updatedTimestamp; 

現在我reqirement是同時我會得到一個創建API請求作爲JOSN我不應該得到這樣的僱員,createdBy,createdTimestamp,updatedBy,updatedTimestamp任何領域。

但在GET API響應中,我應該發送所有這些字段。

我不能在這裏像使用employeeId這樣的字段使用jsonIgnore我沒有在請求中解析它,但我想在響應中發送它。

在PATCH/PUT API調用中,我希望從請求中的UI發出employeeId,但不會低於4字段createdBy,createdTimestamp,updatedBy,updatedTimestamp。

所以一個簡單的解決方案可以創建單獨的DTO,如EmployeeDTO,EmployeeCreateRequestDTO,EmployeeUpdateRequestDTO。但這會導致代碼的重複。

有沒有更好的方法或JSON功能/註釋可以實現這一目標?

我想要這個的原因,在Swagger Model Schema中,它顯示EmplyeeDTO中的所有可用字段,我想在此處具體說明創建請求用戶不應該看到任何正在設置的字段後端像ID,createdBy等

回答

0

因此,一個簡單的解決方案可能是我可以創建單獨的DTO的,像 EmployeeDTO,EmployeeCreateRequestDTO,EmployeeUpdateRequestDTO。但是 它會導致代碼重複。

它不一定會創建重複代碼,如果以EmployeeCreateRequestDTOEmployeeUpdateRequestDTO所有公共字段只存在EmployeeDTO

使用明確表示業務用例的數據/行爲的特定類比嘗試棘手的事情來混合不應該的東西要好。