Jersey复杂案例 完整的增删改查Restful服务
第一章的入门案例我们可以完成一个简单的HelloWorld程序,下面我们来演示下相对较为复杂的RESTful服务,实现简单学生信息的增删改查。
整个项目框架是在chapter1-3的基础上开发。
Student类的定义
StudentResource服务提供
import cn.lx.entity.Student;
import javax.ws.rs.*;
import java.util.*;
/**提供学生增删改查的接口服务
1. Created by lxliuxuan on 2016/11/14.
*/
@Path("/student")
public class StudentResource {
private static Map<String,Student> map = Collections.synchronizedMap(new HashMap<String, Student>());
/**
*
* 获取所有学生信息的方法
* @return
*/
@GET
@Path("/getAll")
public List<Student> getAll(){
List<Student> lists = new ArrayList<Student>(map.values());
return lists;
}
/**
* 根据id获取学生信息
* @param id
* @return
*/
@GET
@Path("get/{id}")
public Student getById(@PathParam("id") String id){
Student student = map.get(id);
return student;
}
/**
* 添加学生信息 通过json
* @return
*/
@POST
@Path("/addByJson")
public String addByJson(Student student){
map.put(student.getId(),student);
return "success";
}
/**
* 通过form添加学生信息
* @param id
* @param name
* @param age
* @return
*/
@POST
@Path("/add")
public String add(@FormParam("id") String id,
@FormParam("name") String name,
@FormParam("age") Integer age){
Student student = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
map.put(id,student);
return "success";
}
/**
* 根据id删除学生信息
* @param id
* @return
*/
@DELETE
@Path("/delete/{id}")
public String deleteById(@PathParam("id") String id){
map.remove(id);
return "success";
}
}
测试项目
为了更加方便的测试项目,我们使用谷歌浏览器+PSOTMAN(谷歌浏览器插件)进行测试。
postman的使用参见http://jingyan.baidu.com/article/90808022ff18defd91c80f9a.html
启动项目Main方法, 访问http://localhost:8080/application.wadl,
看到对应的wadl信息,表示服务启动并提供成功,即可进行响应的测试。
需要注意的是
1. 增加学生信息
本次提供的接口,使用两种方式来接收传递过来的参数,封装数据。
1.1 使用表单提交数据,FormParam接收数据
postman的请求操作 返回success表示操作完成,数据添加成功。
1.2 json提交数据,DTO接收
本次仍使用Student类进行接收参数,没有单独的去写新的DTO。
2. 查询学生信息
Jersey框架,默认会将返回对象转换为json数据。所以用浏览器访问http://localhost:8080/getAll或者http://localhost:8080/get/1,可以看到下面两个结果。
3. 删除学生信息
上面的程序实现了基本的增删改查,后期会对Jersey框架更多的功能进行讲解。
接口服务在开发中使用了大量的注解,在下一章节,我会具体的介绍每个注解的使用方法和场景。
Jersey系列相关源码请访问:Jersey_learing项目