当前位置: 首页 > news >正文

web应用技术--第9次课后作业(Restful)

一、知识点
RESTful 是一种软件架构风格,核心思想是:把系统中的所有东西都看作"资源",用统一的 URL 定位资源,用 HTTP 方法(GET/POST/PUT/DELETE)描述对资源的操作。

1.RESTful 的核心原则

二、后端代码改了什么?逐行对比

  1. 查询全部
    原来:
@RequestMapping("/userfindAllJson")publicResultfindAllJson(){returnResult.success(userService.findAll());}

URL:GET /api/users/userfindAllJson
问题:URL 里带动词 findAll,而且用了 @RequestMapping(默认支持 GET/POST/PUT/DELETE 所有方法,不精确)
改造后:

@GetMappingpublicResultfindAll(){returnResult.success(userService.findAll());}

URL:GET /api/users
含义:@GetMapping 明确告诉前端——这个接口只能用 GET 方法访问,操作的是 /api/users 这个用户资源集合,返回集合数据
RESTful 语义:获取用户列表

  1. 查询单个(编辑回显用)
    原来:
    没有单独的查询单个接口,编辑页面是在前端先查全部列表,再用 find 过滤匹配 id。
    改造后:
@GetMapping("/{id}")publicResultfindById(@PathVariableIntegerid){returnResult.success(userService.findById(id));}

URL:GET /api/users/1
@PathVariable:把 URL 路径里的 1 提取出来,赋值给 id 参数
RESTful 语义:获取 ID 为 1 的用户资源

  1. 新增
    原来:
@RequestMapping("/addUser")publicResultaddUser(@RequestBodyUseruser){userService.addUser(user);returnResult.success();}

URL:POST /api/users/addUser
问题:URL 里带动词 add
改造后:

@PostMappingpublicResultaddUser(@RequestBodyUseruser){userService.addUser(user);returnResult.success();}

URL:POST /api/users
@PostMapping:明确只能用 POST 方法
RESTful 语义:向 /users 资源集合提交一个新用户,服务端创建资源

  1. 修改
    原来:
@RequestMapping("/updateUser")publicResultupdateUser(@RequestBodyUseruser){userService.updateUser(user);returnResult.success();}

URL:POST /api/users/updateUser
问题:URL 带动词 update,而且 id 藏在请求体里
改造后:

@PutMapping("/{id}")publicResultupdateUser(@PathVariableIntegerid,@RequestBodyUseruser){user.setId(id);userService.updateUser(user);returnResult.success();}

URL:PUT /api/users/1
@PutMapping:HTTP 标准中,PUT 表示全量替换/更新资源
@PathVariable Integer id:从 URL 路径里取 ID,比如 /api/users/1 中的 1
RESTful 语义:用请求体里的数据,替换 ID 为 1 的用户资源

  1. 删除
    原来:
@RequestMapping("/deletebyID")publicResultdeleteById(Integerid){userService.deleteById(id);returnResult.success();}UR

L:POST /api/users/deletebyID?id=1
问题:URL 带动词 delete,参数用 ?id=1 查询字符串传递
改造后:

@DeleteMapping("/{id}")publicResultdeleteById(@PathVariableIntegerid){userService.deleteById(id);returnResult.success();}

URL:DELETE /api/users/1
@DeleteMapping:明确用 DELETE 方法
@PathVariable:ID 放在路径里,不再是 ?id=1
RESTful 语义:删除 ID 为 1 的用户资源

用户接口改为路径参数及前端更新
RESTful 是一种软件架构风格,核心思想是:把系统中的所有东西都看作"资源",用统一的 URL 定位资源,用 HTTP 方法(GET/POST/PUT/DELETE)描述对资源的操作。
一、RESTful 的核心原则
表格
原则 传统写法(你原来的) RESTful 写法(改造后)
URL 是名词,不是动词 /deletebyID、/addUser /users、/users/1
HTTP 方法表动作 全部用 @RequestMapping(任何方法都能访问) GET查、POST增、PUT改、DELETE删
状态码标准化 自己包装 Result{code:1} 保留 Result,同时配合 HTTP 状态码 200/201/404
无状态 每次请求自带完整信息,服务端不保存会话 前后端通过 JSON 交互,不依赖 session
二、后端代码改了什么?逐行对比

  1. 查询全部
    原来:
    java
    @RequestMapping(“/userfindAllJson”)
    public Result findAllJson() {
    return Result.success(userService.findAll());
    }
    URL:GET /api/users/userfindAllJson
    问题:URL 里带动词 findAll,而且用了 @RequestMapping(默认支持 GET/POST/PUT/DELETE 所有方法,不精确)
    改造后:
    java
    @GetMapping
    public Result findAll() {
    return Result.success(userService.findAll());
    }
    URL:GET /api/users
    含义:@GetMapping 明确告诉前端——这个接口只能用 GET 方法访问,操作的是 /api/users 这个用户资源集合,返回集合数据
    RESTful 语义:获取用户列表
  2. 查询单个(编辑回显用)
    原来:
    没有单独的查询单个接口,编辑页面是在前端先查全部列表,再用 find 过滤匹配 id。
    改造后:
    java
    @GetMapping(“/{id}”)
    public Result findById(@PathVariable Integer id) {
    return Result.success(userService.findById(id));
    }
    URL:GET /api/users/1
    @PathVariable:把 URL 路径里的 1 提取出来,赋值给 id 参数
    RESTful 语义:获取 ID 为 1 的用户资源
  3. 新增
    原来:
    java
    @RequestMapping(“/addUser”)
    public Result addUser(@RequestBody User user) {
    userService.addUser(user);
    return Result.success();
    }
    URL:POST /api/users/addUser
    问题:URL 里带动词 add
    改造后:
    java
    @PostMapping
    public Result addUser(@RequestBody User user) {
    userService.addUser(user);
    return Result.success();
    }
    URL:POST /api/users
    @PostMapping:明确只能用 POST 方法
    RESTful 语义:向 /users 资源集合提交一个新用户,服务端创建资源
  4. 修改
    原来:
    java
    @RequestMapping(“/updateUser”)
    public Result updateUser(@RequestBody User user) {
    userService.updateUser(user);
    return Result.success();
    }
    URL:POST /api/users/updateUser
    问题:URL 带动词 update,而且 id 藏在请求体里
    改造后:
    java
    @PutMapping(“/{id}”)
    public Result updateUser(@PathVariable Integer id, @RequestBody User user) {
    user.setId(id);
    userService.updateUser(user);
    return Result.success();
    }
    URL:PUT /api/users/1
    @PutMapping:HTTP 标准中,PUT 表示全量替换/更新资源
    @PathVariable Integer id:从 URL 路径里取 ID,比如 /api/users/1 中的 1
    RESTful 语义:用请求体里的数据,替换 ID 为 1 的用户资源
  5. 删除
    原来:
    java
    @RequestMapping(“/deletebyID”)
    public Result deleteById(Integer id) {
    userService.deleteById(id);
    return Result.success();
    }
    URL:POST /api/users/deletebyID?id=1
    问题:URL 带动词 delete,参数用 ?id=1 查询字符串传递
    改造后:
    java
    @DeleteMapping(“/{id}”)
    public Result deleteById(@PathVariable Integer id) {
    userService.deleteById(id);
    return Result.success();
    }
    URL:DELETE /api/users/1
    @DeleteMapping:明确用 DELETE 方法
    @PathVariable:ID 放在路径里,不再是 ?id=1
    RESTful 语义:删除 ID 为 1 的用户资源

三、前端代码改了什么?





四、前后端页面

http://www.jsqmd.com/news/1092572/

相关文章:

  • Ohook终极指南:3分钟实现Microsoft 365完整功能免费激活方案
  • 从入门到精通:Room EQ Wizard 5.20.13 音频测量实战指南
  • 出现python专门设
  • 2026手机抠图工具实操指南:免费无水印APP与轻量工具使用教程
  • SLAM ---- VINS 外点剔除
  • 用代码绘制专业图表:Mermaid的终极可视化解决方案
  • 暗黑破坏神2终极存档编辑器:免费开源,轻松修改D2/D2R游戏角色数据
  • Deepseek融资5000亿后首推DSpark框架,高并发下大模型响应速度显著提升!
  • cci-job-client架构设计解析:Python脚本如何简化LKP测试流程
  • 一台电脑,四人同屏:Nucleus Co-Op如何让你的游戏派对更精彩?
  • 如何在1分钟内为Windows安装苹果USB网络共享驱动:完整解决方案
  • Win11Debloat架构解析:模块化注册表管理实现Windows系统深度优化
  • FPGA实战指南:从信号采样到频谱分析的FFT IP核全流程解析
  • 实战指南:SPOT数据获取、波段解析与多光谱模拟真彩色合成技术详解
  • 1 安装免费 Python PDF 库
  • Memlink在aarch64架构上的应用:打造高效能ARM云平台内存方案
  • MSPM0 G系列SYSCTL模块深度解析:时钟配置、低功耗模式与实战避坑指南
  • LinkSwift:免费开源网盘下载加速工具,一键获取九大平台直链
  • 从 Python 神经网络到完整 FPGA RTL:MNIST 手写数字项目全自动化生成实战
  • Avalonia中的动画
  • 基于FPGA实现LVDS_7to1接口显示屏显示
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化
  • openEuler双桌面环境实战:从ukui到dde的安装与多模式切换指南
  • 报社登报声明一般多少钱?办理登报声明的流程怎么走?
  • BiliTools:一款让你高效管理B站资源的跨平台工具箱
  • NoFences:你的Windows桌面需要一场空间革命吗?
  • 2026 年全球首个自动驾驶法规获批,终结标准割裂,中国深度参与重塑产业格局
  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 抓“静电”痕:ESD失效分析技术实战
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦