jersey创建restful服务及调用_用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD-阿里云开发者社区...

一、总体说明

通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增、删、改、查等操作。 服务端主要是通过内存的方式,来模拟用户的增加、删除、修改、查询等操作。

二、创建服务端

1.在上文项目中, 在“com.waylau.rest.resources.UserResource“中修改代码, 首先创建一个HashMap,用来保存添加的用户

private static Map userMap = new HashMap();

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 getAllUsers(){

List users = new ArrayList();

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值