【发布时间】:2019-04-15 02:37:24
【问题描述】:
我有一个简单的 Restful webService,使用 Spring Boot 2.1、Java 8,在 Eclipse Neon 上运行。我发送以下请求:
<patentListWrapper>
<patentList>
<patent>
<guid>bbb</guid>
</patent>
<patent>
<guid>ccc</guid>
</patent>
</patentList>
</patentListWrapper>
我得到以下(不正确的)响应:
<patentListWrapper>
<patentList>
<patentList>
<guid>ddd</guid>
</patentList>
<patentList>
<guid>eee</guid>
</patentList>
</patentList>
</patentListWrapper>
即我在响应中有 2 个专利列表元素,而不是一个内部专利元素,我不知道为什么。我映射请求的 2 个 POJO 类是:
public class PatentListWrapper {
private List<Patent> patents;
public List<Patent> getPatentList() {
return patents;
}
public void setPatentList(List<Patent> patents) {
this.patents = patents;
}
}
和:
public class Patent {
private String guid;
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public Patent() {
super();
}
}
我的 REST 控制器类是:
@RestController
public class PndController {
@Autowired
ReadFromDb db;
@RequestMapping(value = "/guidRequest/xmlList", method = RequestMethod.POST, produces = { "application/xml", "text/xml" }, consumes = MediaType.ALL_VALUE )
public PatentListWrapper guidSearchList(@RequestBody PatentListWrapper patentListWrapper) {
System.out.println("DS in guidSearchList()");
patentListWrapper = db.readGuidsFromDb(patentListWrapper); // Set the guid in the patents List in patentListWrapper
return patentListWrapper;
}
}
和 ReadFromDb 类:
@Repository
public class ReadFromDb {
public PatentListWrapper readGuidsFromDb(PatentListWrapper patentListWrapper) {
List<Patent> patents= patentListWrapper.getPatentList();
for(Patent patent : patents) {
patent.setGuid("aaa");
}
patentListWrapper.setPatentList(patents);
return patentListWrapper;
}
}
我正在使用 windows ARC Advanced Rest Client 发送我的回复: Rest client 与 Content-type=application/xml
我已经确定 both PatentList 元素名称映射到 PatentListWrapper 中的 getPatentList()。如何获取响应信封以匹配请求信封?任何帮助表示赞赏。
【问题讨论】:
标签: java rest maven spring-boot