我试图提供一个用Java编程的REST/XML Api.应用程序将获得一个参数,然后通过HTTP返回XML内容.
在PHP中,通过使用我的api由应用程序提供参数&string = helloworld的rest_api.php文件解决它的方式,然后我读取此字符串,进行计算或使用它进行搜索,修改数据以满足我的XML模式并回复此数据一个echo,它使用HTTP响应将其发回.
如何使用Java正确执行此操作?
为此,两个Java扩展可以很好地协同工作:
两者都包含在Glassfish Java EE 5和6参考实现中.
总之,JAX-RS让你通过添加之一声明一个普通方法作为Web服务@GET
,@POST
,@PUT
或@DELETE
注释.JAX-RS还具有自动解析路径和URL查询参数的注释,并且在大多数情况下它负责构造适当的响应对象.
JAXB通过加入自动转换平原对象(POJO)和XML @XmlRootElement
,@XmlElement
,@XmlID
等.当用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);
}
}
Run Code Online (Sandbox Code Playgroud)
生成的XML看起来像这样:
<sensor name="foo">
<id>123</id>
<sensor-value>42</sensor-value>
</sensor>
Run Code Online (Sandbox Code Playgroud)