V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhuzhibin
V2EX  ›  问与答

小白请教一个关于 SpringBoot @RequestParam 注解 Get 请求接收前端数组入参问题

  •  
  •   zhuzhibin · 2023-08-09 10:52:29 +08:00 · 907 次点击
    这是一个创建于 472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    最近有些项目的接口往 Java 迁移,本人半桶水边看边写边学,有个 GET 请求的接口需要前端请求 URL 大致为:

    /api/query?id[0]=1&id[1]=2&id[2]=3 ,也就是并没有 URL 编码(想必很多人会提到逗号分割的请求,这里有历史背景,前端都是这样传,先别让我改成 POST )

    我这边要怎样去接这个入参。。我暂时用了一个最笨的办法 Map(String,String) params

    params 的打印结果大概是:id[0]-> 1 ,然后去获取 params.value 。。

    单纯想请教一下各位大佬们,对了,目前 relaxed-query-chars 设置了 "[,]",否则 http 请求无法解析,直接提示 Bad request ,因为前端没有 urlencode 的问题

    9 条回复    2023-08-09 21:32:13 +08:00
    zhuzhibin
        1
    zhuzhibin  
    OP
       2023-08-09 10:55:18 +08:00
    查了 ChatGPT 很多都不行。。例如说用 @RequestParam("id[]") String[] id 的方式来接之类的,都不行,在不让前端调整的情况下,一开始想直接切换 post 。。。但是想了想,遵循 restful api 风格就暂时用 Map(String,String) params 的办法来接了。。我太菜了
    6IbA2bj5ip3tK49j
        2
    6IbA2bj5ip3tK49j  
       2023-08-09 10:58:16 +08:00
    让前端改成 /api/query?id=1&id=2&id=3 ,后端就能用数组/列表拿到了。
    或者拿 servlet request 一把梭
    zhuzhibin
        3
    zhuzhibin  
    OP
       2023-08-09 12:27:54 +08:00 via iPhone
    @xgfan 单纯讨论这个问题,你说的我都懂
    Jiubia
        4
    Jiubia  
       2023-08-09 14:48:40 +08:00
    HandlerMethodArgumentResolver 应该可以解决你的问题
    mdn
        5
    mdn  
       2023-08-09 14:54:36 +08:00
    传 string, url?ids=1,2,3,4,5,6,7 后端在分割成数组
    assiadamo
        6
    assiadamo  
       2023-08-09 14:55:24 +08:00
    用 Map<String, String[]>类型试试
    zhuzhibin
        7
    zhuzhibin  
    OP
       2023-08-09 21:30:59 +08:00 via iPhone
    @assiadamo 明天试试
    zhuzhibin
        8
    zhuzhibin  
    OP
       2023-08-09 21:31:52 +08:00 via iPhone
    @mdn 这个我懂呀,这不是单独讨论这种入餐方式嘛 数组带下标的
    zhuzhibin
        9
    zhuzhibin  
    OP
       2023-08-09 21:32:13 +08:00 via iPhone
    @Jiubia 看起来是反射?这么粗暴的吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.