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 ORapp-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