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

7 RESTful 规范

7 RESTful 规范

RESTful 规范是目前企业开发中主流的 API 设计风格(几乎所有互联网项目都会用),核心是 “用 HTTP 协议的特性来定义接口的语义”—— 简单说就是 “通过 URL 表示资源,通过 HTTP 方法表示对资源的操作”。

7.1 RESTful 的核心规则

RESTful 规范的核心是 **“资源”+“操作” 分离 **:
  • 资源:用 URL 表示(比如 “购物车项” 是资源,URL 写成/cart/items);
  • 操作:用 HTTP 方法表示(比如 “查、增、删” 对应 GET/POST/DELETE)。
  1. 规则 1:URL 表示 “资源”,不用动词
❌ 非 RESTful(URL 里带 “操作动词”):
/getCartItems // 查购物车 /addCartItem // 加购物车 /deleteCartItem // 删购物车项

✅ RESTful 写法(URL 只写资源,用 HTTP 方法表示操作):

GET /cart/items → 查购物车项(比如:对应controller的`getCartItems`方法) POST /cart/items → 加购物车项(比如:对应controller的`addItemToCart`方法) DELETE /cart/items/{itemId} → 删购物车项(比如:对应controller的`removeItemFromCart`方法)
/cart/items是 “购物车项” 这个资源,HTTP 方法决定是 “查、增、删”。
  1. 规则 2:用 HTTP 方法表示 “操作”
RESTful 中 HTTP 方法的对应关系,比如:
HTTP 方法
操作
你的接口示例
作用
GET
查(读)
@GetMapping("/cart/items")
获取购物车列表
POST
增(创建)
@PostMapping("/cart/items")
新增购物车项
DELETE
删(删除)
@DeleteMapping("/cart/items/{itemId}")
删除指定购物车项
PUT
改(全量更新)
@PutMapping("/cart/items/{itemId}")
更新购物车项数量
  1. 规则 3:用路径参数表示 “单个资源”
比如删除 “某个购物车项” 的接口:
@DeleteMapping("/cart/items/{itemId}") public Result<Void> removeItemFromCart(@PathVariable Long itemId) { ... }
  • URL 中的{itemId}是 “路径参数”,表示 “单个购物车项资源”;
  • 对应 RESTful 的 “操作单个资源” 语义(比如/cart/items/123就是 “ID 为 123 的购物车项”)。

7.2 在企业中的应用

现在几乎所有企业级项目(尤其是前后端分离、微服务项目)都采用 RESTful 规范,原因是:
  1. 接口语义清晰:看 URL 和 HTTP 方法就知道是 “操作什么资源、做什么事”,比如DELETE /cart/items/123,不用看文档就知道是 “删除 ID 为 123 的购物车项”;
  2. 前后端协作高效:前端开发者不用记 “接口叫什么名字”,只需要按 “资源 + 方法” 的逻辑调用;
  3. 兼容各种框架 / 工具:Swagger、Postman 等工具都对 RESTful 接口有友好支持,自动生成文档、调试更方便;
  4. 易扩展:比如后续要加 “修改购物车项”,直接用PUT /cart/items/{itemId},接口风格统一,维护成本低。
http://www.gsyq.cn/news/106055.html

相关文章:

  • 城通网盘直链提取终极指南:免费突破下载限制的完整方案
  • CUDA核心数对Stable Diffusion 3.5 FP8推理性能的影响实测分析
  • 常见软件测试面试题【100】道
  • 告别圣遗物管理噩梦:3分钟学会椰羊工具箱的智能玩法
  • 33、U-Boot使用指南:环境变量、脚本、镜像与启动配置
  • 用Wan2.2-T2V-5B做短视频创作?这些技巧让你效率翻倍
  • gpt-oss-20b模型训练细节揭秘:harmony格式的作用
  • 企业AI落地全攻略:从零代码到安全合规,开发者和管理者都该收藏的实战指南
  • Source Han Serif 思源宋体:开源免费商用字体完全指南
  • Wan2.2-T2V-A14B模型深度解读:为何它能生成商用级长视频?
  • BBDown命令行视频下载工具:从入门到精通
  • 大模型微调实战:使用Qwen3-32B进行领域适配
  • EasyAdmin8:基于ThinkPHP 8.0的完整后台管理系统终极指南
  • Vue3后台管理系统终极指南:开箱即用的Element Plus管理模板
  • 如何彻底解决OBS-NDI插件运行时缺失问题:完整修复方案
  • Transformers Tokenizer处理Qwen3-VL-30B输入编码
  • 冠豪猪优化算法改进投影寻踪的排水权初始配置研究附Matlab代码
  • 百度网盘提取码智能助手:如何一键获取分享码的完整指南
  • 终极指南:在微信小程序中快速集成专业3D渲染的完整教程
  • Qwen3-VL-8B在智能客服中的落地实践:图像识别+文本交互
  • 利用HunyuanVideo-Foley和Maven构建自动化视频后期处理流水线
  • gpt-oss-20b在低资源环境下的性能调优技巧
  • 通过DBLINK访问远程数据库
  • 告别手写代码!Formily可视化表单设计器让企业级表单开发效率提升300%
  • 使用Wan2.2-T2V-A14B生成动态广告内容,提升营销转化率
  • 企业微信智能表格高效计算工作人天:日 / 周 / 月全维度公式 + 实操指南
  • 城通网盘极速下载:三步获取文件直链的智能工具
  • GitHub Releases发布Qwen3-VL-30B定制化模型版本
  • 如何在本地部署GPT-OSS-20B:基于清华源加速HuggingFace镜像下载
  • 基于单片机电感测量电路系统Proteus仿真(含全部资料)