亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當您有多個方法調用但請求主體不同時,DTO 模式是什么?

當您有多個方法調用但請求主體不同時,DTO 模式是什么?

Qyouu 2021-10-13 16:17:56
有人告訴我,在構建 RestFul API 時,請使用名詞而不是動詞。我還被告知每個 DTO 都有自己的控制器。在“編輯屬性”和“添加屬性”方法需要兩個不同的請求主體的情況下,我的 DTO 是什么樣的?@RestController@RequestMapping(value = "/property")public class PropertyController{    @RequestMapping(method = RequestMethod.GET)    //get properties method definition goes here    @RequestMapping(method = RequestMethod.PUT)    // edit property method definition goes here    @RequestMapping(method = RequestMethod.POST)    // add property method definition goes here}編輯屬性要求:{    "userloginid": "3333",    "propertyname": "My edited property name",    "propertyid": "1"}添加屬性需要:{    "userloginid": "3333",    "propertyname": "My new property name"}
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

/users/{loginid}/properties/{propertyid} - 請考慮這個端點,因為它更符合 RESTful


對于 PUT 更新,您可以考慮上面的端點,userloginid并propertyid從路徑變量中獲取和。


在 PUT 請求中,PUT /users/3333/properties/1我將發送以下請求正文:


{

    "propertyname": "My edited property name"

}

對于創建新屬性的 POST 請求,我會考慮/users/{loginid}/properties/使用相同的請求正文結構向此 URL 發送請求:


{

    "propertyname": "My new property name"

}

正如您所看到的,我沒有在 POST 請求中發送任何 ID,因為存儲對象的 ID 生成應該發生在 DAO 中。


客戶端將在響應正文中收到創建/更新屬性的 ID:


{

    "propertyname": "My updated/created property name",

    "propertyid": "1"

}

因此,從上面的示例中,我將創建兩個 DTO 來處理輸出和輸入情況。


查看完整回答
反對 回復 2021-10-13
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

您應該使用這三個屬性(userloginid、propertyname、propertyid)創建相同的 DTO 。但是您必須考慮到propertyid可以為null。然后在發送請求參數時,如果沒有發送propertyid,解析器會創建一個propertyid=null的DTO實例;否則解析器將創建一個帶有propertyid=value_passed_in 參數的 DTO 實例。


查看完整回答
反對 回復 2021-10-13
  • 3 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號