背景:
最近有些项目的接口往 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 的问题
1
zhuzhibin OP 查了 ChatGPT 很多都不行。。例如说用 @RequestParam("id[]") String[] id 的方式来接之类的,都不行,在不让前端调整的情况下,一开始想直接切换 post 。。。但是想了想,遵循 restful api 风格就暂时用 Map(String,String) params 的办法来接了。。我太菜了
|
2
6IbA2bj5ip3tK49j 2023-08-09 10:58:16 +08:00
让前端改成 /api/query?id=1&id=2&id=3 ,后端就能用数组/列表拿到了。
或者拿 servlet request 一把梭 |
4
Jiubia 2023-08-09 14:48:40 +08:00
HandlerMethodArgumentResolver 应该可以解决你的问题
|
5
mdn 2023-08-09 14:54:36 +08:00
传 string, url?ids=1,2,3,4,5,6,7 后端在分割成数组
|
6
assiadamo 2023-08-09 14:55:24 +08:00
用 Map<String, String[]>类型试试
|