您当前的位置: 首页 >  restful

Restful 示例

发布时间:2020-05-24 19:57:16 ,浏览量:7

相关博客: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进行测试 在这里插入图片描述

/v2/depts/{deptno}

在这里插入图片描述

/v2/depts

在这里插入图片描述

/v1/depts

在这里插入图片描述

/v1/depts/{deptno}

在这里插入图片描述 结果: 在这里插入图片描述

/v1/depts/deptno

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

暂无认证

  • 7浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0639s