使用Java的REST / XML Api

问题描述 投票:5回答:4

我试图提供一个用Java编程的REST / XML Api。应用程序将获得一个参数,然后通过HTTP返回XML内容。

在PHP中,通过使用我的api由应用程序提供参数&string = helloworld的rest_api.php文件解决它的方式,然后我读取此字符串,进行计算或使用它进行搜索,修改数据以满足我的XML模式并回复此数据一个echo,它使用HTTP响应将其发回。

如何使用Java正确执行此操作?

java rest
4个回答
7
投票

为此,两个Java扩展可以很好地协同工作:

  • JAX-RS(参考实施泽西岛)
  • JAXB(参考实施地铁)

两者都包含在Glassfish Java EE 5和6参考实现中。

简而言之,JAX-RS允许您通过添加@GET@POST@PUT@DELETE注释之一来将普通方法声明为Web服务。 JAX-RS还具有自动解析路径和URL查询参数的注释,并且在大多数情况下它负责构造适当的响应对象。

JAXB通过添加@XmlRootElement@XmlElement@XmlID等自动将纯对象(PO​​JO)与XML进行转换。当与JAX-RS结合使用时,编组和解组将以透明方式完成。

例如:

// POJO with JAXB annotations

@XmlRootElement(name = "sensor")
public class MyObject {
    @XmlID
    @XmlElement
    private String id;

    @XmlAttribute
    private String name;

    @XmlElement(name = "sensor-value")
    private Integer value;

    @XmlTransient // don't translate to XML
    private Double computedValue;

    // ...getters and setters
}


// POJO with REST interface

@Path("/mywebservice")
public class MyWebService {
    @EJB
    MySensorController controller;

    @GET
    @Produces("application/xml")
    public MyObject getCurrentSensorValue(@QueryParam("ID") String id) {
        // automatic unmarshalling from MyObject to XML
        return controller.getSensorValue(id);
    }
}

生成的XML看起来像这样:

<sensor name="foo">
    <id>123</id>
    <sensor-value>42</sensor-value>
</sensor>

3
投票

我个人用过两者,

我可以推荐。我发现Restlet更容易入手,但Jersey提供了更好的集成可能性(至少我使用它的方式)。


2
投票

RESTlet框架应该是一个非常好的开始


1
投票

我没有尝试过Restlet或Jersey,但我对Apache Wink非常满意。它在我们的生产环境中运行良好而没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.