实用指南:RESTful API:@RequestParam与@PathVariable实战对比

news/2025/9/22 8:57:07/文章来源:https://www.cnblogs.com/lxjshuju/p/19104517

@RequestParam vs @PathVariable 在删除和查找操作中的使用差异

在项目实战中,选择使用 @RequestParam 还是 @PathVariable 来接收ID参数,通常基于以下几个考虑因素:

1. RESTful API 设计原则

查找操作使用 @PathVariable

@GetMapping("/depts/{id}")
public Result findDept(@PathVariable Integer id) {
// 根据ID查找部门
}
  • 符合RESTful原则:GET请求用于获取资源,URL格式应为 /资源名/{资源ID}
  • 语义清晰/depts/123 明确表示"获取ID为123的部门"
  • 缓存友好:URL路径作为完整资源标识符,更适合浏览器和CDN缓存

删除操作使用 @RequestParam

@DeleteMapping("/depts")
public Result deleteDept(@RequestParam Integer id) {
// 根据ID删除部门
}
  • 历史惯例:早期REST实践有时对删除操作使用查询参数
  • 批量操作考虑:使用查询参数更易于扩展为批量删除(如/depts?id=1,2,3
  • 安全考虑:某些框架对DELETE请求的URL长度限制较严格,查询参数更灵活

2. 实际项目中的常见考量

安全性

前端调用便利性

  • 查找操作:前端通常直接拼接URL,@PathVariable方式更直观
  • 删除操作:前端可能使用HTTP库发送请求,@RequestParam方式在代码中更明确

API一致性

很多项目会保持一致性,全部使用@PathVariable

// 一致性更好的做法
@GetMapping("/depts/{id}")
public Result findDept(@PathVariable Integer id) {
/* ... */
}
@DeleteMapping("/depts/{id}")
public Result deleteDept(@PathVariable Integer id) {
/* ... */
}

3. 现代最佳实践

目前更普遍接受的做法是统一使用@PathVariable,因为:

  1. 更符合RESTful设计原则
  2. URL结构更清晰易读
  3. 与HTTP方法语义更匹配(DELETE /resource/{id})
  4. 被大多数API设计指南推荐

4. 示例对比

使用 @PathVariable (推荐)

@RestController
@RequestMapping("/depts")
public class DeptController
{
@GetMapping("/{id}")
public Result findDept(@PathVariable Integer id) {
// 查找部门
}
@DeleteMapping("/{id}")
public Result deleteDept(@PathVariable Integer id) {
// 删除部门
}
}

请求示例:

  • 查找:GET /depts/123
  • 删除:DELETE /depts/123

使用 @RequestParam (较少见)

@RestController
@RequestMapping("/depts")
public class DeptController
{
@GetMapping
public Result findDept(@RequestParam Integer id) {
// 查找部门
}
@DeleteMapping
public Result deleteDept(@RequestParam Integer id) {
// 删除部门
}
}

请求示例:

  • 查找:GET /depts?id=123
  • 删除:DELETE /depts?id=123

5. 结论

在项目实战中,根据ID删除部门使用@RequestParam而查找使用@PathVariable的情况,可能是由于:

  1. 历史遗留设计:项目初期设计选择,后续未统一
  2. 特定框架限制:某些旧框架对DELETE方法的支持限制
  3. 团队约定:特定团队的开发规范
  4. 安全考虑:避免敏感操作ID出现在URL中

然而,现代API设计更推荐统一使用@PathVariable,因为它更符合RESTful原则,提供更清晰、一致的API接口。如果项目中存在这种不一致,建议逐步重构为统一风格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android普通应用切到后台后,多长时间会被系统回收 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

变分法和欧拉-拉格朗日方程 - Emi

基本概念函数(function):函数是一种映射,输入一个数,输出一个数。 泛函(functional):泛函也是一种映射,输入一个函数,输出一个数。故我们可以说泛函是函数的函数。 微分(derivation):微分是函数的”输入和…

【Android】View 的滑动 - 实践

【Android】View 的滑动 - 实践2025-09-22 08:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

AT_arc194_d [ARC194D] Reverse Brackets

考虑将包含关系建出一棵树,那么答案相当于你可以重排儿子,相同大小儿子不区分,问能得到多少种树的形态。 简单用树哈希做就好了。

2025.9.22——1橙

普及- P10376 [GESP202403 六级] 游戏 很简单的DP,但要注意数组偏移,把负数也存进去。

huggingface.co 无法访问

Ping查询结果: huggingface.co 查询时间:2025-09-22 08:46:27

202403_QQ_brutezip

流量分析,文件分离,ZIP文件,掩码爆破Tags:流量分析,文件分离,ZIP,掩码爆破 0x00. 题目 题目表述 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202403_QQ_brut…

实用指南:Vue开发准备

实用指南:Vue开发准备pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

完整教程:WPF 程序用户权限模块利用MarkupExtension实现控制控件显示

完整教程:WPF 程序用户权限模块利用MarkupExtension实现控制控件显示2025-09-22 08:10 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

私有外设总线PPB(Private Peripheral Bus) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

enrichmcp 构建数据驱动mcp的框架

enrichmcp 构建数据驱动mcp的框架enrichmcp 构建数据驱动mcp的框架 包含的特性通过数据模型生成类型工具 处理实体关系 处理schema 发现 通过pydantic 模型进行input 以及output 校验 支持database,api,自定义逻辑 支…

完整教程:visual studio快捷键

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AppSpider 7.5.020 for Windows - Web 应用程序安全测试

AppSpider 7.5.020 for Windows - Web 应用程序安全测试AppSpider 7.5.020 for Windows - Web 应用程序安全测试 Rapid7 Dynamic Application Security Testing (DAST) released Sep 2025 请访问原文链接:https://sys…

上周热点回顾(9.15

热点随笔:为什么不建议在 Docker 中跑 MySQL? (苏三说技术) C# 2025年6-9月TIOBE排名增长及未来展望 (张善友) 重要:Java25正式发布(长期支持版)! (磊哥|www.javacn.site) 刚刚 Java 25 炸裂发布!让 Java 再次…

“学术造神”何时休?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087这个时代的学术圈,正在上演一场盛大的滑稽剧:实验室里产出的不再…

vLLM 核心机密:大模型推理引擎内部长啥样?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087vLLM Offcie Hours #32 又披露了一批新技术。其中有两个比较特殊,…

华为销量下滑OV米荣迎来窗口期

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087一、华为手机销量阶段性下滑以下是全国全渠道销量份额(不包含智选…

【GitHub每日速递 250922】开源 AI 搜索引擎 Perplexica:本地大模型 + 多模式搜索,免费又强大!

原文: https://mp.weixin.qq.com/s/F7KwZlUd5OQg5CbAEbZGug MarkItDown:多格式文件转Markdown神器,助力LLM文本分析! markitdown 是一个将文件和办公文档转换为 Markdown 的工具。简单讲,它能帮你把 Word、Excel 等…

coze工作流实战——三分钟读一本名著

导航前言 作品展示 工作流展示 操作步骤 结语 参考前言2025年被行业认为是智能体(Agent)元年。过去几年,我们见证了AI 大模型的飞速发展,从只会简单回答问题,简单生成图文,到可以写代码,生成复杂视频,甚至可以…

大厂是怎么识别“高潜员工”的?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087大部分人都想当“高潜员工”,包括我,因为高潜员工意味着更好的机…