You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中不同请求方法的使用规则与适用场景是什么?

Spring Controller 请求方法使用规范

Spring 里的@GetMapping/@PostMapping等注解本质是对HTTP标准请求方法的封装,使用规范完全遵循HTTP语义约定和REST架构设计原则,核心是匹配接口的行为属性,不是只要能跑通就可以随便用:

各请求方法的适用场景

  • GET:仅适用于无副作用的只读操作,要求幂等(重复调用多次和调用一次的结果完全一致,不会修改服务端数据)。浏览器默认支持GET请求缓存、地址栏直接访问、书签保存,适合查询、计算类的纯读取场景。

    你当前的计税场景如果只是传入参数计算返回结果,不会写入数据库/修改服务端数据,用@GetMapping是完全符合规范的。如果你的TaxDAO.addResult()方法会额外存储计算记录到数据库,有写操作,那就不适合用GET。

  • POST:适用于新增资源、提交需要服务端处理的非幂等操作,允许有副作用,浏览器不会默认缓存POST请求,也不能通过地址栏直接发起,适合有数据写入的场景。
  • PUT:适用于全量更新已存在的资源,要求幂等,比如修改某条已存储的计税记录的全部字段。
  • PATCH:适用于部分更新已存在的资源,幂等性可选,比如仅修改某条计税记录的收入参数。
  • DELETE:适用于删除资源,要求幂等。

你遇到的现象说明

浏览器地址栏发起的请求默认都是GET方法,没有原生的POST发起入口,所以你写的@PostMapping接口只能通过Postman这类可以自定义请求方法的工具调用,这是HTTP标准的约定,和Spring本身无关。

你当前场景的优化建议

如果接口只有计算逻辑没有写操作:直接用@GetMapping即可,符合规范没有问题。
如果接口需要存储计算记录:改用@PostMapping,同时建议把income参数从路径变量移到请求体中,POST请求的业务参数放在URL上不符合常规设计规范。


内容的提问来源于stack exchange,提问作者Aden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:08