获取 XML 和 REST 请求的实体

Get XML And Entity of REST Request

我有一个 Java REST 网络服务,其方法如下:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
@Path("/send")
public Response sendStuff(Stuff stuff) {
    // do magic with stuff
    return Response.ok("OK.").build();
}

出于调试目的,我希望将 XML 添加到 Stuff

现在我可以手动编组发送对象。然后我会得到一个完全不同的 XML,它可能缺少一些元素或属性。

或者我可以注入 XML 并自己解析它,但这有点生硬,我可能会错过像拦截器这样的 Web 服务功能。

是否有更好的方法从 JAX-RS 网络服务获取 XML 和 Java 实体?

由于似乎没有正确的方法,我决定采用该方法:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
@Path("/send")
public Response sendStuff(String xml) {
    Stuff stuff;

    try (ByteArrayInputStream inputXml = new ByteArrayInputStream(xml.getBytes(Charset.defaultCharset()))) {
        final JAXBContext context = JAXBContext.newInstance(Stuff.class);
        request = (Stuff) context.createUnmarshaller().unmarshal(inputXml);
    } catch (final JAXBException | IOException e) {
        return Response.status(400, e.getMessage()).build();
    }

    // do magic with stuff
    return Response.ok("OK.").build();
}