)
一、知识点RESTful 是一种软件架构风格核心思想是把系统中的所有东西都看作资源用统一的 URL 定位资源用 HTTP 方法GET/POST/PUT/DELETE描述对资源的操作。1.RESTful 的核心原则二、后端代码改了什么逐行对比查询全部原来RequestMapping(/userfindAllJson)publicResultfindAllJson(){returnResult.success(userService.findAll());}URLGET /api/users/userfindAllJson问题URL 里带动词 findAll而且用了 RequestMapping默认支持 GET/POST/PUT/DELETE 所有方法不精确改造后GetMappingpublicResultfindAll(){returnResult.success(userService.findAll());}URLGET /api/users含义GetMapping 明确告诉前端——这个接口只能用 GET 方法访问操作的是 /api/users 这个用户资源集合返回集合数据RESTful 语义获取用户列表查询单个编辑回显用原来没有单独的查询单个接口编辑页面是在前端先查全部列表再用 find 过滤匹配 id。改造后GetMapping(/{id})publicResultfindById(PathVariableIntegerid){returnResult.success(userService.findById(id));}URLGET /api/users/1PathVariable把 URL 路径里的 1 提取出来赋值给 id 参数RESTful 语义获取 ID 为 1 的用户资源新增原来RequestMapping(/addUser)publicResultaddUser(RequestBodyUseruser){userService.addUser(user);returnResult.success();}URLPOST /api/users/addUser问题URL 里带动词 add改造后PostMappingpublicResultaddUser(RequestBodyUseruser){userService.addUser(user);returnResult.success();}URLPOST /api/usersPostMapping明确只能用 POST 方法RESTful 语义向 /users 资源集合提交一个新用户服务端创建资源修改原来RequestMapping(/updateUser)publicResultupdateUser(RequestBodyUseruser){userService.updateUser(user);returnResult.success();}URLPOST /api/users/updateUser问题URL 带动词 update而且 id 藏在请求体里改造后PutMapping(/{id})publicResultupdateUser(PathVariableIntegerid,RequestBodyUseruser){user.setId(id);userService.updateUser(user);returnResult.success();}URLPUT /api/users/1PutMappingHTTP 标准中PUT 表示全量替换/更新资源PathVariable Integer id从 URL 路径里取 ID比如 /api/users/1 中的 1RESTful 语义用请求体里的数据替换 ID 为 1 的用户资源删除原来RequestMapping(/deletebyID)publicResultdeleteById(Integerid){userService.deleteById(id);returnResult.success();}URLPOST /api/users/deletebyID?id1问题URL 带动词 delete参数用 ?id1 查询字符串传递改造后DeleteMapping(/{id})publicResultdeleteById(PathVariableIntegerid){userService.deleteById(id);returnResult.success();}URLDELETE /api/users/1DeleteMapping明确用 DELETE 方法PathVariableID 放在路径里不再是 ?id1RESTful 语义删除 ID 为 1 的用户资源用户接口改为路径参数及前端更新RESTful 是一种软件架构风格核心思想是把系统中的所有东西都看作资源用统一的 URL 定位资源用 HTTP 方法GET/POST/PUT/DELETE描述对资源的操作。一、RESTful 的核心原则表格原则 传统写法你原来的 RESTful 写法改造后URL 是名词不是动词 /deletebyID、/addUser /users、/users/1HTTP 方法表动作 全部用 RequestMapping任何方法都能访问 GET查、POST增、PUT改、DELETE删状态码标准化 自己包装 Result{code:1} 保留 Result同时配合 HTTP 状态码 200/201/404无状态 每次请求自带完整信息服务端不保存会话 前后端通过 JSON 交互不依赖 session二、后端代码改了什么逐行对比查询全部原来javaRequestMapping(“/userfindAllJson”)public Result findAllJson() {return Result.success(userService.findAll());}URLGET /api/users/userfindAllJson问题URL 里带动词 findAll而且用了 RequestMapping默认支持 GET/POST/PUT/DELETE 所有方法不精确改造后javaGetMappingpublic Result findAll() {return Result.success(userService.findAll());}URLGET /api/users含义GetMapping 明确告诉前端——这个接口只能用 GET 方法访问操作的是 /api/users 这个用户资源集合返回集合数据RESTful 语义获取用户列表查询单个编辑回显用原来没有单独的查询单个接口编辑页面是在前端先查全部列表再用 find 过滤匹配 id。改造后javaGetMapping(“/{id}”)public Result findById(PathVariable Integer id) {return Result.success(userService.findById(id));}URLGET /api/users/1PathVariable把 URL 路径里的 1 提取出来赋值给 id 参数RESTful 语义获取 ID 为 1 的用户资源新增原来javaRequestMapping(“/addUser”)public Result addUser(RequestBody User user) {userService.addUser(user);return Result.success();}URLPOST /api/users/addUser问题URL 里带动词 add改造后javaPostMappingpublic Result addUser(RequestBody User user) {userService.addUser(user);return Result.success();}URLPOST /api/usersPostMapping明确只能用 POST 方法RESTful 语义向 /users 资源集合提交一个新用户服务端创建资源修改原来javaRequestMapping(“/updateUser”)public Result updateUser(RequestBody User user) {userService.updateUser(user);return Result.success();}URLPOST /api/users/updateUser问题URL 带动词 update而且 id 藏在请求体里改造后javaPutMapping(“/{id}”)public Result updateUser(PathVariable Integer id, RequestBody User user) {user.setId(id);userService.updateUser(user);return Result.success();}URLPUT /api/users/1PutMappingHTTP 标准中PUT 表示全量替换/更新资源PathVariable Integer id从 URL 路径里取 ID比如 /api/users/1 中的 1RESTful 语义用请求体里的数据替换 ID 为 1 的用户资源删除原来javaRequestMapping(“/deletebyID”)public Result deleteById(Integer id) {userService.deleteById(id);return Result.success();}URLPOST /api/users/deletebyID?id1问题URL 带动词 delete参数用 ?id1 查询字符串传递改造后javaDeleteMapping(“/{id}”)public Result deleteById(PathVariable Integer id) {userService.deleteById(id);return Result.success();}URLDELETE /api/users/1DeleteMapping明确用 DELETE 方法PathVariableID 放在路径里不再是 ?id1RESTful 语义删除 ID 为 1 的用户资源三、前端代码改了什么四、前后端页面