【问题标题】:RESTful API ClientRESTful API 客户端
【发布时间】:2015-02-24 10:01:30
【问题描述】:

我是 RESTful API 客户端开发的新手。我有一个示例客户端代码来集成到 REST 服务器。下面是相同的快照。

public TsbPublishClient() {
    client = javax.ws.rs.client.ClientBuilder.newClient();
    webTarget = client.target(BASE_URI).path("publication");
}
public <T> T getJson(Class<T> responseType, String product, String version, String category) throws ClientErrorException {
    WebTarget resource = webTarget;
    resource = resource.path(java.text.MessageFormat.format("registry/{0}/{1}/{2}", new Object[]{product, version, category}));
    return resource.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(responseType);
}

public void close() {
    client.close();
}

我的问题是如何从我的主类调用 getJson() 方法。返回类型是 T 并且它接受类型为 Class

的 responseType 参数

提前致谢。

【问题讨论】:

  • 这段代码是你写的吗?我不明白问题是什么。我看到的唯一问题是“我如何调用这个方法?”如果您没有编写此代码,我想知道它是否已设置为适用于您的域。请详细说明调用此方法有什么困难?
  • 如果不是你写的,而且它不适合你的域,那么你就不能调用它。您只需要编写自己的代码。
  • 嗨,peeskillet,不,我得到了上面的类文件来与 REST 服务器集成。
  • 只需执行类似Product product = getJson(Product.class, p, v, c); 的操作,或者您想要解组的返回 Java 类型。将任何类传递给第一个参数,这将是返回类型。也许对泛型做一些研究

标签: api rest client


【解决方案1】:

您想使用 JAX-WS 访问 RESTful API,这让我有点惊讶。在该技术中,Web 服务操作调用由基于 XML 的协议(如 SOAP)表示。

有多种技术可以调用 RESTful 应用程序。以下是其中两个:

  • Restlet - 一个轻量级且强大的 Java REST 框架,可同时处理客户端和服务器端。
  • JAX-RS (JSR 311: JAX-RS: The Java API for RESTful Web Services) - 一个用于消费和生产 RESTful 应用程序的标准化 API。 Restlet 提供了该规范的实现。

以下代码描述了一个带有 Restlet 的客户端示例:

ClientResource cr = new ClientResource("http://(...)/contacts");
MyDataBean bean = cr.get(MediaType.APPLICATION_JSON);

以下代码描述了使用 JAX-RS 的客户端示例:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://(...)")
                         .path("contacts");

MyDataBean bean = target
       .request(MediaType.APPLICATION_JSON_TYPE)
       .get(MyDataBean.class);

这两种工具都可以利用内容(JSON、XML、YAML 等)/POJO 转换,例如 Jackson

希望对你有帮助 蒂埃里

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2018-03-18
    • 2013-09-16
    • 2013-04-24
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多