当前位置: 首页 > 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.gsyq.cn/news/1604528.html

相关文章:

  • Win11Debloat架构解析:模块化注册表管理实现Windows系统深度优化
  • FPGA实战指南:从信号采样到频谱分析的FFT IP核全流程解析
  • 1 安装免费 Python PDF 库
  • MSPM0 G系列SYSCTL模块深度解析:时钟配置、低功耗模式与实战避坑指南
  • 报社登报声明一般多少钱?办理登报声明的流程怎么走?
  • LinkSwift:免费开源网盘下载加速工具,一键获取九大平台直链
  • 基于FPGA实现LVDS_7to1接口显示屏显示
  • BiliTools:一款让你高效管理B站资源的跨平台工具箱
  • NoFences:你的Windows桌面需要一场空间革命吗?
  • 为什么需要一个“闭环“
  • 如何用BiliTools轻松管理你的B站数字资产?3大核心功能深度解析
  • RSA非对称加密在登录模块的实战应用:从原理到前后端完整实现
  • PyTorch 实战联邦学习FedAvg:从零构建到隐私保护模型聚合
  • 如何在Windows上为所有游戏添加Steam控制器全局支持?GlosSI完整指南
  • WorkshopDL:终极Steam创意工坊下载器 - 轻松获取海量游戏模组
  • 番茄小说下载器:三步完成小说永久保存的终极解决方案
  • 终极指南:在macOS上轻松制作Windows启动盘的5个简单步骤
  • 3个场景解锁VR视频:无需专业设备也能享受沉浸式体验
  • 从代码到图表:5分钟掌握Mermaid图表生成神器,让技术文档告别单调
  • Windows 7环境下使用IDA与C32Asm静态破解Android APK实战指南
  • CentOS8环境下Zabbix 6.0 LTS部署与生产级配置实战
  • 3分钟掌握Windows窗口置顶技巧:AlwaysOnTop让你的多任务处理效率翻倍
  • 从SSR到AutoMSRCR:Retinex图像增强算法演进与实战调优指南
  • 干货合集:盘点2026年圈粉无数的的AI论文网站
  • 探索智能缠论量化框架:构建高效交易系统的完整技术指南
  • 从亚稳态到稳定传输:深入解析CDC跨时钟域同步的核心技术与设计实践
  • 基于鸿蒙十二阶均衡体系:东亚地缘长期失衡下的区域冲突多情景推演——境外全域渗透体系远期博弈极限测算(十四)
  • ABC460F 题解
  • 终极指南:3种方法让Switch游戏安装变得简单高效
  • 技术创作者如何解读VIP文章合作协议:从条款到实践