我將 Spring boot 用于 REST 應用程式,即使 JSON 請求似乎是正確的,我也會將 null 作為 DTO 物件。任何人都可以提出一些建議。
來自郵遞員的json
{
"description": "Third questionnaire",
"createdDate": "2022-06-23",
"approvalStatus": "Approved",
"questionnaireVersion": "V1",
"isActive": false,
"questionSet": [
{
"text": "Question text",
"possibleAnswerSet": []
}
]
}
控制器發布方法是
@PostMapping(
produces = MediaType.APPLICATION_JSON_VALUE ,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public String createQuestionnaire(@RequestBody QuestionnaireDTORequest questionnaireDTORequest){
Questionnaire questionnaire = mapToQuestionnaire(questionnaireDTORequest);
Questionnaire createdQuestionnaire = questionnaireService.createQuestionnaire(questionnaire);
if(createdQuestionnaire != null)
return "Questionnaire created successfully";
else
return "Questionnaire cannot be created";
}
當我在除錯模式下運行時,我得到的問卷調查 DTORequest 為空。
問卷調查DTO請求
public class QuestionnaireDTORequest implements Serializable {
private static final long serialVersionUID = 5L;
private String description;
private LocalDate createdDate;
private String approvalStatus;
private String questionnaireVersion;
private boolean isActive = false;
private Set<Question> questionSet = new HashSet<>();
}
uj5u.com熱心網友回復:
TL:DR 將 getter 和 setter 添加到QuestionnaireDTORequest.
此外,這只會使值為空,而不是QuestionnaireDTORequest物件。是這樣嗎?
我跑了:
curl --location --request POST 'localhost:8081/' \
--header 'Content-Type: application/json' \
--data-raw ' {
"description": "Third questionnaire",
"createdDate": "2022-06-23",
"approvalStatus": "Approved",
"questionnaireVersion": "V1",
"isActive": false,
"questionSet": [
{
"text": "Question text" }
]
}'
我的控制器:
@RestController
public class MyController {
@PostMapping(
produces = MediaType.APPLICATION_JSON_VALUE ,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public String createQuestionnaire(@RequestBody QuestionnaireDTORequest questionnaireDTORequest){
if(questionnaireDTORequest != null)
return "Questionnaire created successfully";
else
return "Questionnaire cannot be created";
}
}
該模型是相同的,只是添加了 Getter 和 Setter。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496911.html
