SpringBoot中的@ PathVariable,URL中带有斜线

我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常带有

。我无法控制用户在URL中输入的内容,因此我想获取他输入的内容,然后我就可以对其进行处理。

SpringBoot代码很简单:

@RequestMapping("/modules/{moduleName}")

@ResponseBody

public String moduleStrings (@PathVariable("moduleName") String moduleName) throws Exception {

...

}

因此,URL例如如下:

http://localhost:3000/modules/...

问题在于,参数 通常带有斜杠。例如,

metadata-api\cb-metadata-services OR

app-customization-service-impl\\modules\\expand-link-schemes\\common\\app-customization-service-api

因此,用户可以输入:

http://localhost:3000/modules/metadata-api\cb-metadata-services

是否有可能获得用户在 之后在URL中输入的所有内容?

如果有人告诉我什么是解决此类问题的好方法。

回答:

此代码获取完整路径:

@RequestMapping(value = "/modules/{moduleBaseName}/**", method = RequestMethod.GET)

@ResponseBody

public String moduleStrings(@PathVariable String moduleBaseName, HttpServletRequest request) {

final String path =

request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();

final String bestMatchingPattern =

request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();

String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, path);

String moduleName;

if (null != arguments && !arguments.isEmpty()) {

moduleName = moduleBaseName + '/' + arguments;

} else {

moduleName = moduleBaseName;

}

return "module name is: " + moduleName;

}

以上是 SpringBoot中的@ PathVariable,URL中带有斜线 的全部内容, 来源链接: utcz.com/qa/422580.html

回到顶部