在Java中使用Spring Boot框架時(shí),可以同時(shí)使用多個(gè)DTO作為方法參數(shù)。
TO(Data Transfer Object)是一個(gè)常見的設(shè)計(jì)模式,用于封裝數(shù)據(jù)傳輸對(duì)象。它通常用于將數(shù)據(jù)從一個(gè)層傳遞到另一個(gè)層,例如將數(shù)據(jù)從服務(wù)層傳遞到控制器層。
在Spring Boot中,使用DTO作為方法參數(shù)可以使代碼更具可讀性和可維護(hù)性。例如,如果您需要從前端傳遞多個(gè)參數(shù)到控制器層,則可以將這些參數(shù)封裝到一個(gè)DTO中,并在控制器方法中使用該DTO作為參數(shù)。
以下是一個(gè)示例代碼,演示如何在Spring Boot中同時(shí)使用兩個(gè)DTO作為方法參數(shù):
TraumaTaskController
@PostMapping("/createUser")
public ResponseEntity<String> query(@RequestBody @Valid ConnectioonDTO connectioonDTO) {
//處理用戶和地址信息
return ResponseEntity.ok("User and address created successfully");
}
一個(gè)方法只是用一個(gè) @RequestBody
如果一個(gè)方法里邊使用了兩個(gè) @RequestBody或出現(xiàn)錯(cuò)誤
I/O error while reading input message; nested exception is java.io.IOException: Stream closed
因?yàn)槊總€(gè)方法只允許使用一個(gè) @RequestBody。使用 @RequestBody Spring 將傳入的請(qǐng)求主體轉(zhuǎn)換為指定的對(duì)象(最后關(guān)閉表示主體的流),因此嘗試在同一方法中第二次使用 @RequestBody 是沒有意義的,因?yàn)榱饕呀?jīng)關(guān)閉。
所以要將多個(gè)DTO組合起來。
ConnectioonDTO
@Data
public class ConnectioonDTO implements Serializable {
@ApiModelProperty(value = "任務(wù)ConditionDTO")
private TraumaTaskConditionDTO traumaTaskConditionDTO;
@ApiModelProperty(value = "頁面分頁請(qǐng)求參數(shù)")
private PageDTO pageDTO;
}
在上面的示例代碼中,控制器方法使用@RequestBody注解將兩個(gè)不同的DTO(TraumaTaskConditionDTO 和PageDTO )合并到一個(gè)作為參數(shù)傳遞。使用這種方式,可以方便地傳遞多個(gè)DTO,并且可以確保控制器方法的參數(shù)清晰明確。
需要注意的是,當(dāng)使用多個(gè)DTO作為方法參數(shù)時(shí),需要確保這些DTO的屬性名稱與前端請(qǐng)求的JSON數(shù)據(jù)屬性名稱一致。否則,Spring Boot將無法正確地解析請(qǐng)求并將數(shù)據(jù)注入到DTO中。
多個(gè)DTO的入?yún)⒃趺词褂肞ostman測(cè)試呢?
由于 query方法的參數(shù)類型是 TraumaTaskConditionDTO 和PageDTO,因此在 Postman 中測(cè)試時(shí),需要將這兩個(gè)對(duì)象的數(shù)據(jù)都包含在請(qǐng)求體中??梢园凑找韵虏襟E操作:
打開 Postman 并選擇 POST 請(qǐng)求方式。
在請(qǐng)求 URL 處輸入 API 的地址,例如:http://localhost:8080/createUser。
在請(qǐng)求體中選擇 “raw” 并選擇 JSON 格式。
在請(qǐng)求體中輸入 JSON 數(shù)據(jù),與 TraumaTaskConditionDTO 和PageDTO對(duì)象的屬性名稱匹配。例如:文章來源:http://www.zghlxwxcb.cn/news/detail-435105.html
{
"traumaTaskConditionDTO": {
"keyword":"",
"startTime":null,
"endTime":null,
"status": "1",
"areaList": null,
"name":"邱善平",
"RegisterNo":"457457567567",
"hospitalNo":"4746756757",
"dcjg":""
},
"pageDTO": {
"pageNum": 5,
"pageSize": 10
}
}
在上面的示例中,我們使用了兩個(gè)嵌套的 JSON 對(duì)象,分別表示TraumaTaskConditionDTO 和PageDTO對(duì)象。這樣可以將兩個(gè)對(duì)象的數(shù)據(jù)都傳遞到一個(gè) API 請(qǐng)求中。
發(fā)送 API 請(qǐng)求并等待響應(yīng)。
檢查響應(yīng)是否成功,并確保 DTO 對(duì)象的屬性已被正確地填充。
需要注意的是,使用 Postman 測(cè)試 API 時(shí),您需要確保請(qǐng)求體中的 JSON 數(shù)據(jù)與 DTO 對(duì)象的屬性名稱完全匹配,以便 Spring Boot 可以正確地解析數(shù)據(jù)并將其填充到 DTO 對(duì)象中。另外,您還需要確保 API 的地址和端口與您的 Spring Boot 應(yīng)用程序中的地址和端口匹配。文章來源地址http://www.zghlxwxcb.cn/news/detail-435105.html
到了這里,關(guān)于Springboot接口多個(gè)DTO入?yún)⒌腜ostman上傳方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!