猿问

如何从 spring rest 服务返回 XML 响应?

我试图在我的简单 spring rest 服务中返回一个 xml 响应。我使用 spring initializr 启动并创建了一些员工类和一个客户端来发送请求。默认似乎是 JSON 输入和输出,但当我尝试将其更改为 XML 时,它仍然以 JSON 响应。


我尝试在员工类中添加 XML 注释,并在 @GetMapping 方法旁边添加 @ResponseBody。我还看到了其他一些需要添加某种 spring 配置的方法,但是 spring initializr 不包含任何配置文件,只是一个 pom.xml。


EmployeeController.java



@RestController

public 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();

    }


}


慕的地8271018
浏览 147回答 2
2回答

幕布斯7119047

您需要将映射更新为:@GetMapping("/employees", produces = MediaType.APPLICATION_XML_VALUE)另外,请确保您有 publicgetters和settersin your&nbsp;EmployeeService.javaclass。

撒科打诨

你必须使用而不是这条线httpHeaders.setContentType(MediaType.APPLICATION_XML);和headers.setAccept(Collections.singletonList(MediaType.APPLICATION_XML));在 RestTemplate 标头中。您也可以通过这种方式进行。headers.set("Accept",&nbsp;MediaType.APPLICATION_XML);此外,在 Rest 端点的情况下,您还必须支持 XML 和 JSON,如下所示。@GetMapping(path&nbsp;=&nbsp;"/{your&nbsp;path}",&nbsp;produces&nbsp;=&nbsp;{MediaType.APPLICATION_JSON_VALUE,&nbsp;MediaType.APPLICATION_XML_VALUE})
随时随地看视频慕课网APP

相关分类

Java
我要回答