RESTful应用程序中jersey-server,jersey-client,jersey-grizzly的用途

时间:2014-01-19 06:06:34

标签: rest maven tomcat jersey jersey-client

我正在尝试使用Maven,Apache Tomcat 7.0,Eclipse IDE创建一个基本的RESTful应用程序。我在谷歌的一些示例代码中遇到了jven-server,jersey-client,jersey-grizzly等maven依赖项的使用。

我想知道这些依赖关系的目的,即。为什么我们添加它们,它做什么,它们是如何工作的?

我已经推荐了几个球衣javadocs,但我无法得到清晰的图片。请提供相同的简单说明。

提前致谢

1 个答案:

答案 0 :(得分:5)

简而言之:您使用jersey-server来公开REST API,如下例所示:

@Path("/hello")
class RESTDispatcher {

    @GET
    @Path("/world")
    public String helloWorld() {
        return "Hello world!"
    }
}

您使用jersey-client来使用REST API

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 API时,我们都需要jersey-client 我的泽西客户端使用示例假设您的localhost上部署了第一个示例。请参阅第一个示例的注释,类的 @Path 以及路径 / hello / world 中方法结果的 @Path ,应使用HTTP调用GET请求(请参阅 @GET 注释) 因此,我们使用该目标

创建REST客户端
Invocation.Builder builder = ClientBuilder
                            .newClient()
                            .target("http://localhost/hello/world");

然后我们用HTTP GET请求调用此目标

Response response = builder.method("GET");

然后我们知道(来自helloWorld方法的签名)这个API响应包含一个可以反序列化为String实例的实体。所以我们把它读成“结果”变量

String result = response.readEntity(String.class);

您应该将反序列化的目标类作为参数提供给readEntity响应方法 此外,REST API仅返回String并不常见。相反,它们返回JSON或XML。 在这种情况下,您可以使用JAXB来读取实体,Jersey可以完美地使用它。查看this part of documentation for XML supportthis for JSON