我试图在我的简单 spring rest 服务中返回一个 xml 响应。我使用 spring initializr 启动并创建了一些员工类和一个客户端来发送请求。默认似乎是 JSON 输入和输出,但当我尝试将其更改为 XML 时,它仍然以 JSON 响应。我尝试在员工类中添加 XML 注释,并在 @GetMapping 方法旁边添加 @ResponseBody。我还看到了其他一些需要添加某种 spring 配置的方法,但是 spring initializr 不包含任何配置文件,只是一个 pom.xml。EmployeeController.java@RestControllerpublic class EmployeeController { @Autowired private EmployeeService employeeService; @GetMapping("/employees") public @ResponseBody HashMap<String, Employee> retrieveEmployees() { return employeeService.retrieveAllEmployees(); } @GetMapping("/employees/{employeeId}") public @ResponseBody Employee retrievebyId(@PathVariable String employeeId) { return employeeService.retrieveEmployee(employeeId); } @PostMapping(path="/employees") public ResponseEntity<Void> registeremployee(@RequestBody Employee newemployee) { Employee employee = employeeService.addEmployee(newemployee.getId(),newemployee.getName(), newemployee.getDescription()); if (employee == null) return ResponseEntity.noContent().build(); URI location = ServletUriComponentsBuilder.fromCurrentRequest().path( "/{id}").buildAndExpand(employee.getId()).toUri(); return ResponseEntity.created(location).build(); }}
2 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
您需要将映射更新为:
@GetMapping("/employees", produces = MediaType.APPLICATION_XML_VALUE)
另外,请确保您有 publicgetters
和setters
in your EmployeeService.java
class。
撒科打诨
TA贡献1934条经验 获得超2个赞
你必须使用而不是这条线
httpHeaders.setContentType(MediaType.APPLICATION_XML);
和
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_XML));
在 RestTemplate 标头中。
您也可以通过这种方式进行。
headers.set("Accept", MediaType.APPLICATION_XML);
此外,在 Rest 端点的情况下,您还必须支持 XML 和 JSON,如下所示。
@GetMapping(path = "/{your path}", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
添加回答
举报
0/150
提交
取消