我正在尝试使用Maven、ApacheTomcat7.0、Eclipse创建一个基本的RESTful应用程序。我在google提供的一些示例代码中看到了maven依赖项的用法,如jersey-server、jersey-client、jersey-grizzly等。
我想知道这些依赖关系的目的。我们为什么要加它们,它能做什么,它们是如何工作的?
我已经提到了几个泽西javadocs,但无法清楚地了解情况。请对此提供一个简单的解释。
提前感谢
发布于 2014-01-20 07:53:57
简单地说,您可以使用jersey-server来公开REST,如本例中所示:
@Path("/hello")
class RESTDispatcher {
@GET
@Path("/world")
public String helloWorld() {
return "Hello world!"
}
}您可以使用jersey-client来使用REST。
public static String callRestAPI(String[] args) {
Invocation.Builder builder = ClientBuilder
.newClient()
.target("http://localhost/hello/world");
Response response = builder.method("GET");
String result = response.readEntity(String.class);
return result;
//will return "Hello world!" with our previous example deployed on localhost
}而泽西-灰熊只是为了使用球衣与灰熊服务器。
更新
我的意思是,每当我们需要调用REST时,我们都需要一个客户端。
我的泽西客户机使用示例假设第一个示例部署在您的本地主机上。参见第一个示例的注释,类的@ path 和方法的@Path导致路径/hello/world,这应该与HTTP请求一起调用(参见@ GET注释)。
因此,我们使用该目标创建REST客户端。
Invocation.Builder builder = ClientBuilder
.newClient()
.target("http://localhost/hello/world");然后,我们使用HTTP请求调用这个目标
Response response = builder.method("GET");然后我们知道(从helloWorld方法的签名)这个API响应包含一个可以反序列化为String实例的实体。因此,我们将其读入“结果”变量。
String result = response.readEntity(String.class);您应该向响应的readEntity方法提供反序列化的目标类作为参数。
另外,REST只返回字符串并不常见。相反,它们返回JSON或XML。在这种情况下,您可以使用JAXB读取实体,泽西可以很好地处理它。检查支持XML的文档的这一部分和这是为了JSON。
https://stackoverflow.com/questions/21213760
复制相似问题