相关博客:Restful规范
服务器代码 创建SpringBoot项目 Maven依赖<dependency> <groupId>org.projectlombok /* 成功状态码 */ SUCCESS(200, "操作成功"), /** * 客户端错误 */ CLIENT_FAIL(400, "客户端错误"), /** * 服务器端错误 */ SERVER_FAIL(500, "服务器端错误") ; /** * 操作代码 */ int code; /** * 提示信息 */ String msg; ResultCode(int code, String msg) { this.code = code; this.msg = msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }Result.java
@Data @NoArgsConstructor @AllArgsConstructor public class Result<T> { /** * 请求响应状态码(200、400、500) */ private int code; /** * 请求结果描述信息 */ private String msg; /** * 请求结果数据 */ private T data; private Result(ResultCode resultCode) { if (resultCode == null) { return; } this.code = resultCode.code(); this.msg = resultCode.msg(); } private Result(ResultCode resultCode, T data) { this(resultCode); this.data = data; } /** * 操作成功 * * @return */ public static <T> Result<T> success() { Result result = new Result(ResultCode.SUCCESS); return result; } /** * 操作成功 * * @param data * @return */ public static <T> Result<T> success(T data) { Result result = success(); result.setData(data); return result; } /** * 操作成功 * * @param resultCode * @param data * @return */ public static <T> Result<T> success(ResultCode resultCode, T data) { Result result = new Result(resultCode, data); return result; } /** * 操作失败 * * @param resultCode * @return */ public static <T> Result<T> fail(ResultCode resultCode) { Result result = new Result(resultCode); return result; } /** * 操作失败 * * @param resultCode * @param data * @return */ public static <T> Result<T> fail(ResultCode resultCode, T data) { Result result = new Result(resultCode, data); return result; } }实体类
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder @ToString public class Dept { private Integer deptno; private String dname; private String loc; }数据库模拟类
public class DeptTable { private static ArrayList<Dept> depts = new ArrayList<>(); static { depts.add(new Dept(10, "ACCOUNTING", "CHICAGO")); depts.add(new Dept(20, "RESEARCH", "DALLAS")); depts.add(new Dept(30, "SALES", "CHICAGO")); depts.add(new Dept(40, "OPERATIONS", "BOSTON")); } public static boolean insert(Dept dept) { boolean res = depts.add(dept); return res; } public static boolean update(Dept dept) { Integer deptno = dept.getDeptno(); boolean flag = false; for (int i = 0; i < depts.size(); i++) { Dept temp = depts.get(i); if (temp.getDeptno().equals(deptno)) { depts.set(i, dept); flag = true; } } return flag; } public static boolean delete(Integer deptno) { boolean flag = false; for (int i = 0; i < depts.size(); i++) { Dept dept = depts.get(i); if (dept.getDeptno().equals(deptno)) { depts.remove(i); flag = true; } } return flag; } public static Dept select(Integer deptno) { for (int i = 0; i < depts.size(); i++) { Dept dept = depts.get(i); if (dept.getDeptno().equals(deptno)) { return dept; } } return null; } public static void output() { //输出所有数据,查看测试结果用 for (Dept dept : depts) { System.out.println(dept); } } }Controller
@Slf4j @RestController public class DeptController { //获取Dept,使用GET方法 @GetMapping(value = "/v2/depts/{deptno}") public Result getDeptByDeptno(@PathVariable("deptno") Integer deptno) { Dept dept = DeptTable.select(deptno); if (dept != null) { return Result.success(dept); } else { return Result.success(ResultCode.SERVER_FAIL); } } //获取所有Dept @GetMapping("/v2/depts") public Result<List<Dept>> getAllDept() { List<Dept> depts = DeptTable.selectAll(); return Result.success(depts); } //增加Dept ,使用POST方法 @PostMapping(value = "/v1/depts") public Result saveDept(@RequestBody Dept dept) { boolean res = DeptTable.insert(dept); log.info("saveDept:{}", dept); DeptTable.selectAll().forEach(System.out::println); if (res) { return Result.success(dept); } else { return Result.fail(ResultCode.SERVER_FAIL); } } //更新Dept,使用PUT方法 @PutMapping(value = "/v1/depts/{deptno}") public Result updateDept(@PathVariable("deptno")Integer deptno,@RequestBody Dept dept) { dept.setDeptno(deptno); boolean flag = DeptTable.update(dept);//表示用户要删除的deptno不存在 log.info("updateDept:{}", dept); DeptTable.selectAll().forEach(System.out::println); if (flag) { return Result.success(dept); } else { return Result.fail(ResultCode.SERVER_FAIL); } } //删除Dept,使用DELETE方法 @DeleteMapping(value = "/v1/depts/{deptno}") public Result deleteDept(@PathVariable Integer deptno) { boolean flag = DeptTable.delete(deptno); log.info("deleteDept:{}", deptno); DeptTable.selectAll().forEach(System.out::println); if (flag) { return Result.success(deptno); } else { return Result.fail(ResultCode.CLIENT_FAIL); } } }
API说明:
请求方式 api 功能 Get /v2/depts/{deptno} 获取指定编号的部门 Get /v2/depts 获取所有的部门 post /v1/depts 增加部门 put /v1/depts/{deptno} 修改部门 delete /v1/depts/{deptno} 删除指定的部门 测试部分
启动项目,采用Restful toolkit进行测试
结果: