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

Ram*_*Sri 4 rest tomcat jersey maven jersey-client

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

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

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

提前致谢

mkr*_*hin 5

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

@Path("/hello")
class RESTDispatcher {

    @GET
    @Path("/world")
    public String helloWorld() {
        return "Hello world!"
    }
}
Run Code Online (Sandbox Code Playgroud)

您使用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
}
Run Code Online (Sandbox Code Playgroud)

而jersey-grizzly只是为了使用带有灰熊服装的球衣.

更新
我的意思是,每当我们需要调用某人暴露的REST API时,我们都需要jersey-client.
我的泽西客户端使用示例假设您的localhost上部署了第一个示例.看第一实施例的注释,@Path类和@Path在路径的方法的结果/你好/世界,应使用HTTP GET请求(见称为@GET注释).
因此,我们使用该目标创建REST客户端

Invocation.Builder builder = ClientBuilder
                            .newClient()
                            .target("http://localhost/hello/world");
Run Code Online (Sandbox Code Playgroud)

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

Response response = builder.method("GET");
Run Code Online (Sandbox Code Playgroud)

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

String result = response.readEntity(String.class);
Run Code Online (Sandbox Code Playgroud)

您应该将反序列化的目标类作为参数提供给readEntity响应方法.
此外,REST API仅返回String并不常见.相反,它们返回JSON或XML.在这种情况下,您可以使用JAXB来读取实体,Jersey可以完美地使用它.查看这部分文档以获取XML支持,并查看此内容以获取JSON.