Spring 控制器和将参数字符串处理为字符串数组

问题描述 投票:0回答:1

我遇到了这个问题。我有一个简单的 spring REST 控制器,它有一个 get 方法,它应该处理像这样的请求 http://localhost:8080/test/get?params=["param1", "param2", "param3"]

@RestController
@RequestMapping(value="/test")
public class TestController {

    @GetMapping(value="/get")
    public List<String> test(@RequestParam List<String> stringList) {
        return stringList;
    }
}

因此,在我的应用程序中,我在 stringList = ["["param1"", ""param2"", ""param3"]"] 我明白,如果我将请求本身修复为 http://localhost:8080/test/get?params=param1, param2, param3 那么我将得到 stringList = ["param1", "param2", "param3"]

我需要如何重新设计控制器才能获得相同的结果而不更改查询本身并且无需手动删除额外的字符?

我在互联网上没有找到类似的例子,所以我决定在这里提出我的问题,至少指导我到哪里可以阅读到它

java spring-boot controller query-string
1个回答
0
投票

您可以为自定义 dto 实现自定义转换器,或者只需在控制器中进行映射:

@GetMapping(value="/get")
public List<String> test(@RequestParam String stringList) {
    //["param1", "param2", "param3"]
    String[] values = stringList.replace("[", "")
        .replace("]", "")
        .split(",");
    return Arrays.stream(values).toList();
}
© www.soinside.com 2019 - 2024. All rights reserved.