gpt4 book ai didi

java - Spring Boot 中的 @PathVariable 在 URL 中带有斜杠

转载 作者:行者123 更新时间:2023-12-01 16:22:33 29 4
gpt4 key购买 nike

我必须在 SpringBoot 应用程序中使用 @PathValiable 从 URL 获取参数。这些参数通常带有斜杠。我无法控制用户在 URL 中输入的内容,因此我想获取他输入的内容,然后我可以处理它。

我已经浏览过这里的 Material 和答案,我认为对我来说,好的解决方案不是要求用户以某种方式对输入参数进行编码。

SpringBoot代码很简单:

@RequestMapping("/modules/{moduleName}")
@ResponseBody
public String moduleStrings (@PathVariable("moduleName") String moduleName) throws Exception {

...

}

因此,URL 例如如下所示:

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

问题是参数 moduleName 经常带有斜杠。例如,

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

是否可以获取用户在 /modules/ 之后在 URL 中输入的所有内容?

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

最佳答案

根据 P.J.Meisch 的回答,我为我的案例找到了简单的解决方案。它还允许在 URL 参数中考虑几个斜杠。它也不允许像前面的答案一样使用反斜杠。

@RequestMapping(value = "/modules/**", method = RequestMethod.GET)
@ResponseBody
public String moduleStrings(HttpServletRequest request) {

String requestURL = request.getRequestURL().toString();

String moduleName = requestURL.split("/modules/")[1];

return "module name is: " + moduleName;

}

关于java - Spring Boot 中的 @PathVariable 在 URL 中带有斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62232698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com