gpt4 book ai didi

java - Spring @PathVariable 没有结束斜杠(带 IP 地址的字符串)

转载 作者:行者123 更新时间:2023-11-30 11:16:17 25 4
gpt4 key购买 nike

这是我的 Controller 的一部分:

@RequestMapping(value="/json/getPCs/{serverAddress}", method=RequestMethod.GET)
public @ResponseBody List<PC> getPCForServerJSON(@PathVariable String serverAddress) {
logger.info("Server address: " + serverAddress);
return PCManager.findByServer(serverManager.findByAddress(serverAddress));
}

在浏览器中我访问 URL http://localhost:8080/test/pc/json/getPCs/192.168.200.1

在日志中我看到:

INFO : net.example.test.PCController - Server addres: 192.168.200

如果我转到 URL http://localhost:8080/test/pc/json/getPCs/192.168.200.1/ 末尾有斜杠就可以了:

INFO : net.example.test.PCController - Server addres: 192.168.200.1

为什么?我想使用没有结尾斜杠的 url。

最佳答案

配置您的 RequestMappingHandlerMapping 以创建没有匹配后缀的 PatternsRequestCondition 实例(匹配您的路径段)。

WebMvcConfigurationSupport 中,覆盖以下内容

@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
mapping.setUseSuffixPatternMatch(false);
return mapping;
}

该配置参数默认启用(true)

If enabled a method mapped to "/users" also matches to "/users.*".

所以你的路径段

{serverAddress}

实际上是匹配的

{serverAddress}[.].*
// ^ literally a dot

所以给定值

192.168.200.1

它只捕获

192.168.200

禁用它会给你想要的行为。

关于java - Spring @PathVariable 没有结束斜杠(带 IP 地址的字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com