首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RESTful应用程序中使用jersey-server、jersey-client、jersey-grizzly

在RESTful应用程序中使用jersey-server、jersey-client、jersey-grizzly
EN

Stack Overflow用户
提问于 2014-01-19 06:06:33
回答 1查看 2.9K关注 0票数 4

我正在尝试使用Maven、ApacheTomcat7.0、Eclipse创建一个基本的RESTful应用程序。我在google提供的一些示例代码中看到了maven依赖项的用法,如jersey-server、jersey-client、jersey-grizzly等。

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

我已经提到了几个泽西javadocs,但无法清楚地了解情况。请对此提供一个简单的解释。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-20 07:53:57

简单地说,您可以使用jersey-server来公开REST,如本例中所示:

代码语言:javascript
复制
@Path("/hello")
class RESTDispatcher {

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

您可以使用jersey-client来使用REST。

代码语言:javascript
复制
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客户端。

代码语言:javascript
复制
Invocation.Builder builder = ClientBuilder
                            .newClient()
                            .target("http://localhost/hello/world");

然后,我们使用HTTP请求调用这个目标

代码语言:javascript
复制
Response response = builder.method("GET");

然后我们知道(从helloWorld方法的签名)这个API响应包含一个可以反序列化为String实例的实体。因此,我们将其读入“结果”变量。

代码语言:javascript
复制
String result = response.readEntity(String.class);

您应该向响应的readEntity方法提供反序列化的目标类作为参数。

另外,REST只返回字符串并不常见。相反,它们返回JSON或XML。在这种情况下,您可以使用JAXB读取实体,泽西可以很好地处理它。检查支持XML的文档的这一部分这是为了JSON

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21213760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档