色空大师 2023-09-24 09:55 采纳率: 42.3%
浏览 1
已结题

写接口时把变量写到路径和写成请求参数的区别是啥

写接口时把变量写到路径和写成请求参数的区别是啥

写代码时有个疑惑,变量写到路径和作为请求参数有啥区别吗?

@GetMapping("group/{cid}")
    public ResponseEntity<List<SpecGroup>> querySpecGroups(@PathVariable("cid") Long cid){
    }

这个的请求是这样的
localhost:8083/spec/group/76
通常是作为参数

@GetMapping("group")
    public ResponseEntity<List<SpecGroup>> querySpecGroups(Long cid){

localhost:8083/spec/group?cid=76
请问,除了url不一样外,有啥区别呢,为啥我看别人的代码有些查询接口id写到路径里,有些写到请求参数中?还是说这只是两种写法,效果完全一样?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-24 12:50
    关注

    【以下回答由 GPT 生成】

    这两种写法在结果上并没有什么区别,实现的效果是一样的。不过它们的使用场景有所不同。

    1. 把变量写到路径中:
    2. 适用于对于一个资源进行具体查询或操作,需要在URL中动态指定资源的标识。例如,查询一个特定商品的信息,可以使用 /api/products/{productId} 的形式,其中{productId}表示具体的商品ID。

    3. 把变量作为请求参数:

    4. 适用于对资源进行筛选和查询时需要传递多个参数,且参数可以为空的情况。例如,筛选商品列表时可以传递多个条件,如价格范围、品牌等,可以使用 /api/products?priceMin=10&priceMax=100&brand=apple 的形式,其中priceMinpriceMaxbrand为请求参数。

    选择哪种方式取决于具体的需求和设计风格,但通常来说:

    • 如果资源标识不可缺少或不可变动,例如订单号、用户ID等,可以将其放到路径中。
    • 如果是可选的或可变动的查询条件,例如筛选、排序等,可以将其作为请求参数。

    所以,你在编写接口时可以根据具体的场景选择适合的方式来传递参数。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 创建了问题 9月24日