Restful 示例#yyds干货盘点#

古人学问无遗力,少壮工夫老始成。这篇文章主要讲述Restful 示例#yyds干货盘点#相关的知识,希望能为你提供帮助。
服务器代码 创建SpringBoot项目 Maven依赖

< dependency> < groupId> org.projectlombok< /groupId> < artifactId> lombok< /artifactId> < version> 1.18.10< /version> < /dependency> < dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter< /artifactId> < /dependency> < dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter-web< /artifactId> < /dependency> < dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter-test< /artifactId> < scope> test< /scope> < exclusions> < exclusion> < groupId> org.junit.vintage< /groupId> < artifactId> junit-vintage-engine< /artifactId> < /exclusion> < /exclusions> < /dependency>

application.yml
server: port: 80 servlet: context-path: /demo

返回统一格式数据相关 ResultCode.java
public enum ResultCode /* 成功状态码 */ 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 = https://www.songbingjia.com/android/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 = "https://www.songbingjia.com/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 = "https://www.songbingjia.com/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 = "https://www.songbingjia.com/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 = "https://www.songbingjia.com/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 示例#yyds干货盘点#】启动项目,采用Restful toolkit进行测试
Restful 示例#yyds干货盘点#

文章图片

/v2/depts/deptno
Restful 示例#yyds干货盘点#

文章图片

/v2/depts
Restful 示例#yyds干货盘点#

文章图片

/v1/depts
Restful 示例#yyds干货盘点#

文章图片

/v1/depts/deptno
Restful 示例#yyds干货盘点#

文章图片

结果:
Restful 示例#yyds干货盘点#

文章图片

/v1/depts/deptno
Restful 示例#yyds干货盘点#

文章图片


    推荐阅读