我正在尝试使用Maven,Apache Tomcat 7.0,Eclipse IDE创建一个基本的RESTful应用程序。我在谷歌的一些示例代码中遇到了jven-server,jersey-client,jersey-grizzly等maven依赖项的使用。
我想知道这些依赖关系的目的,即。为什么我们添加它们,它做什么,它们是如何工作的?
我已经推荐了几个球衣javadocs,但我无法得到清晰的图片。请提供相同的简单说明。
提前致谢
答案 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 注释)
因此,我们使用该目标
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 support和this for JSON。