互联网上有很多如何使用RESTful Client API的东西。 这些是基础。 但是,尽管该主题看起来微不足道,但仍然存在一些障碍,尤其是对于初学者而言。
在这篇文章中,我将尝试总结我的专业知识,以及我如何在实际项目中做到这一点。 我通常使用Jersey(用于构建RESTful服务的参考实现)。 参见例如我的另一篇文章 。 在本文中,我将从JSF bean调用真正的远程服务。 让我们编写一个会话范围的bean RestClient。
package com.cc.metadata.jsf.controller.common;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
/**
* This class encapsulates some basic REST client API.
*/
@ManagedBean
@SessionScoped
public class RestClient implements Serializable {
private transient Client client;
public String SERVICE_BASE_URI;
@PostConstruct
protected void initialize() {
FacesContext fc = FacesContext.getCurrentInstance();
SERVICE_BASE_URI = fc.getExternalContext().getInitParameter('metadata.serviceBaseURI');
client = Client.create();
}
public WebResource getWebResource(String relativeUrl) {
if (client == null) {
initialize();
}
return client.resource(SERVICE_BASE_URI + relativeUrl);