假设我们的控制器是:
@RequestionMapping(value="/application/customer/{data}/test")
public void addCustomer(@PathVariable String data)
{
}
用户可以发送data
之类的任何内容,包括点。但是,如果我们使用Postman或Web浏览器调用http://localhost:8088/dataengine/customer/./test
,则URL将被转换为http://localhost:8088/dataengine/customer/test
,并且会得到404资源找不到错误。
似乎路径变量.
中的{data}
被忽略了。我尝试使用以下代码解决此问题:
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
这也不起作用,因为它仅在数据为tom.harry
之类的内容时才有用。在这种情况下,它不会截断点后的所有内容。但是,如果用户仅在路径变量中传递点(。),则无法使用。