RESTful API 客户端

RESTful API Client

我是 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();
}

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

的 responseType 参数

提前致谢。

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

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

  • Restlet - 轻量级且健壮的 Java REST 框架,可处理客户端和服务器端。
  • JAX-RS(JSR 311:JAX-RS:用于 RESTful Web 服务的 Java API)- 标准化的 API 来消费和生产 RESTful 应用程序。 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

希望对你有帮助, 蒂埃里