Spring中路径的限制

Anc*_*uta 5 java rest url spring path

在使用Spring和REST API时遇到一个有趣的问题,那个问题是:在Spring中,路径是否限制为一定数量的字符?

代码如下

@RequestMapping(value = {REST_PREFIX + "/{key}"}, method = {RequestMethod.GET})
public DashboardItem getExceptionByKey(@PathVariable("key") String key, HttpServletRequest request, HttpServletResponse httpResponse_p) {
    log.info("URL is {}", request.getRequestURL());
    log.info("Key is {}", key);
    return InspectionUtils.getExceptionByKey(key);
}
Run Code Online (Sandbox Code Playgroud)

密钥的示例是

67E4D2C089CBCCA2A9732F6986124C6B10.243.2.107#0EEE5EAB06ED4FFF82A8934F7058860C#79A2F0C170A028A3B0410F0F16303F41
Run Code Online (Sandbox Code Playgroud)

发送请求时,请确保对URL进行编码,并在程序中接收以下URL

/rest/exceptions/67E4D2C089CBCCA2A9732F6986124C6B10.243.2.107#0EEE5EAB06ED4FFF82A8934F7058860C#79A2F0C170A028A3B0410F0F16303F41
Run Code Online (Sandbox Code Playgroud)

因此,我收到了Hole键,但是当它解析它时,可变键只是

67E4D2C089CBCCA2A9732F6986124C6B10.243.2
Run Code Online (Sandbox Code Playgroud)

我以为可能是特殊字符,但看起来不像。我的第二个猜测是路径的长度受到限制。

因此,我对您的问题是有关路径的限制还是其他问题?

谢谢

rob*_*rob 5

这是某种弹簧约定,将最后一个点之后的所有内容视为文件扩展名并将其切断。您可以简单地尝试在请求映射和请求中添加尾随 /。IEREST_PREFIX + "/{key}/"

有关更复杂但更好的解决方案,如果您不是调用 API 的人,请参阅此问题