Dil*_*lip 48 servlets jax-rs java-ee
今天我读到了Restful服务.基本上我所理解的是Restful webservices将在HTTP请求方法上工作,而不是普通的webservice将在SOAP请求上工作.
什么是Restful服务需要,因为普通的servlet也可以在HTTP方法上工作?
Bal*_*usC 65
RESTful更像是一种架构风格而不是一种不同的技术.从服务器的角度来看,它被设计为完全无状态且基于每个请求自包含(即没有会话).从客户的角度来看,它更像是一种通过带有(自我记录)路径参数而不是请求参数的URL获取不同格式信息的方法.
当然,您可以使用普通的vanilla servlet执行此操作,但它会引入一些样板代码来收集路径参数并生成所需的响应.JAX-RS只是一个方便且自包含的API,无需自己编写所有样板代码,从而产生最少的自我编码代码.
假设您有一个JAXB实体作为模型如下:
@XmlRootElement
public class Data {
@XmlElement
private Long id;
@XmlElement
private String value;
// ...
@Override
public String toString() {
return String.format("Data[id=%d,value=%s]", id, value);
}
}
Run Code Online (Sandbox Code Playgroud)
和JAX-RS资源如下:
@Path("data")
public class DataResource {
@EJB
private DataService service;
@GET
@Path("text/{id}")
@Produces(MediaType.TEXT_PLAIN)
public String getAsText(@PathParam("id") Long id) {
return String.valueOf(service.find(id));
}
@GET
@Path("xml/{id}")
@Produces(MediaType.APPLICATION_XML)
public Data getAsXml(@PathParam("id") Long id) {
return service.find(id);
}
@GET
@Path("json/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Data getAsJson(@PathParam("id") Long id) {
return service.find(id);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您已经通过以下方式获得了正确格式的所需内容:
而已.尝试使用单个普通的Servilla来做同样的事情:)请注意,SOAP本质上也是通过HTTP进行的.它基本上是HTTP上的额外XML层,而不是不同的网络协议.
| 归档时间: |
|
| 查看次数: |
24349 次 |
| 最近记录: |