package org.springside.examples.miniservice.rs.client;
import java.net.URI;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Required;
import org.springside.examples.miniservice.rs.dto.UserDTO;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.DefaultClientConfig;
/**
* 使用Jersey Client的User REST客户端.
*
* @author calvin
*/
public class UserResourceClient {
private WebResource client;
@Required
public void setBaseUrl(String baseUrl) {
Client jerseyClient = Client.create(new DefaultClientConfig());
client = jerseyClient.resource(baseUrl);
}
public List<UserDTO> getAllUser() {
return client.path("/users").accept(MediaType.APPLICATION_JSON).get(new GenericType<List<UserDTO>>() {
});
}
public UserDTO getUser(Long id) {
return client.path("/users/" + id).accept(MediaType.APPLICATION_JSON).get(UserDTO.class);
}
public URI createUser(UserDTO user) {
ClientResponse response = client.path("/users").entity(user, MediaType.APPLICATION_JSON).post(
ClientResponse.class);
return response.getLocation();
}
}