用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD

一、总体说明

通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增、删、改、查等操作。

服务端主要是通过内存的方式,来模拟用户的增加、删除、修改、查询等操作。

二、创建服务端

1.在上文项目中,

在“com.waylau.rest.resources.UserResource“中修改代码,

首先创建一个HashMap,用来保存添加的用户

private static Map<String,User> userMap  = new HashMap<String,User>();

2.创建增、删、改、查 用户资源等操作

/**
	 * 增加
	 * @param user
	 */
	@POST
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public void createStudent(User user)
    {
		userMap.put(user.getUserId(), user );
    }
	
	/**
	 * 删除
	 * @param id
	 */
    @DELETE
    @Path("{id}")
    public void deleteStudent(@PathParam("id")String id){
    	userMap.remove(id);
    }
    
    /**
     * 修改
     * @param user
     */
    @PUT
    @Consumes(MediaType.APPLICATION_XML)
    public void updateStudent(User user){
		userMap.put(user.getUserId(), user );
    }
 
    /**
     * 根据id查询
     * @param id
     * @return
     */
    @GET
    @Path("{id}")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public User getUserById(@PathParam("id") String id){
    	User u = userMap.get(id);
    	return u;
    }
   
    /**
     * 查询所有
     * @return
     */
    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<User> getAllUsers(){     
    	List<User> users = new ArrayList<User>();   
        users.addAll( userMap.values() );  
        return users;
    }
    
三、创建客户端程序

1.创建包“com.waylau.rest.client”,在包下建一个UserClient.java,代码如下:

package com.waylau.rest.client;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.codehaus.jackson.jaxrs.JacksonJsonProvider;

import com.waylau.rest.bean.User;

 
/**
 * 用户客户端,用来测试资源
 * @author waylau.com
 * 2014-3-18
 */
public class UserClient {

	private static String serverUri = "http://localhost:8089/RestDemo/rest";
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		addUser();
		getAllUsers();
		updateUser();
		getUserById();
		getAllUsers();
		delUser();
		getAllUsers();

	}
	/**
	 * 添加用户
	 */
	 private static void addUser() {
		 System.out.println("****增加用户addUser****");
		 User user = new User("006","Susan","21");  
		 Client client = ClientBuilder.newClient();
		 WebTarget target = client.target(serverUri + "/users");
		 Response response = target.request().buildPost(Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
		 response.close();
    }
	 
	/**
	 * 删除用户
	 */
	 private static void delUser() {
		 System.out.println("****删除用户****");
		 Client client = ClientBuilder.newClient();
		 WebTarget target = client.target(serverUri + "/users/006");
		 Response response = target.request().delete();
		 response.close();
	}
	 
	 
	/**
	 * 修改用户
	 */
	 private static void updateUser() {
		 System.out.println("****修改用户updateUser****");
		 User user = new User("006","Susan","33");  
		 Client client = ClientBuilder.newClient();
		 WebTarget target = client.target(serverUri + "/users");
		 Response response = target.request().buildPut( Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
		 response.close();
    }
	/**
	 * 根据id查询用户
	 */
	 private static void getUserById() {
		 System.out.println("****根据id查询用户****");
		 Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
		 WebTarget target = client.target(serverUri + "/users/006");
		 Response response = target.request().get();
		 User user = response.readEntity(User.class);
		 System.out.println(user.getUserId() + user.getUserName()  +  user.getAge());
		 response.close();
    }
	/**
	 * 查询所有用户
	 */
	 private static void getAllUsers() {
		 System.out.println("****查询所有getAllUsers****");
		 
		 Client client = ClientBuilder.newClient();

		 WebTarget target = client.target(serverUri + "/users");
		 Response response = target.request().get();
 		 String value = response.readEntity(String.class);
    	 	 System.out.println(value);
        	 response.close();  //关闭连接
	 }
	 
}

四、运行

启动服务端项目,运行客户端程序UserClient,控制台输出如下

****增加用户addUser****
****查询所有getAllUsers****
[{"userId":"006","userName":"Susan","age":"21"}]
****修改用户updateUser****
****根据id查询用户****
006Susan33
****查询所有getAllUsers****
[{"userId":"006","userName":"Susan","age":"33"}]
****删除用户****
****查询所有getAllUsers****
[]

五、总结

1.客户端如果需要进行JSON转换,需要进行JSON注册

 Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);

2.WebTarget 指明了要请求的资源的地址

3.target.request(). 后面跟的是请求的方法:POST,GET,PUT或DELETE

用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD,布布扣,bubuko.com

用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD

上一篇:php die()的用法


下一篇:.NET中的Timer类型详解