【发布时间】:2017-08-02 11:08:54
【问题描述】:
我在使用 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);
}
一个键的例子是
67E4D2C089CBCCA2A9732F6986124C6B10.243.2.107#0EEE5EAB06ED4FFF82A8934F7058860C#79A2F0C170A028A3B0410F0F16303F41
发送请求时,我确保对 URL 进行编码,在我的程序中,我收到的 URL 如下
/rest/exceptions/67E4D2C089CBCCA2A9732F6986124C6B10.243.2.107#0EEE5EAB06ED4FFF82A8934F7058860C#79A2F0C170A028A3B0410F0F16303F41
因此我收到了孔键,但是当它解析它时,变量键只有
67E4D2C089CBCCA2A9732F6986124C6B10.243.2
我以为可能是特殊字符,但看起来不像。我的第二个猜测是路径的长度是有限制的。
所以我的问题是关于路径是否存在限制或是否还有其他问题?
谢谢
【问题讨论】:
-
回答您的最后一个问题:是的,URL 长度是有限制的——浏览器将其限制为大约 2000 个字符。不,你在 Spring 中还没有达到这个限制。
-
我知道 2000 个字符的限制。我指的是路径变量,如果它有限制
-
没有限制。请告诉我们您在哪里确定密钥被切断,我没有看到打印语句,我只看到另一段可能或可能不正确处理密钥的代码 (
InspectionUtils.getExceptionByKey(key)) -
我的错。在那次通话之前,我正在打印密钥。我已经更新了原帖中的代码。