当前位置: 首页 > 知识库问答 >
问题:

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

何浩荡
2023-03-14

我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常有斜线。我没有一个关于用户将输入URL的控制,所以我想要得到他输入的内容,然后我可以处理它。

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

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

  ...

}
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

共有1个答案

乐正烨熠
2023-03-14

代码获取完整路径:

@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应用程序中使用@PathValiable从URL获取参数。这些参数通常带有 斜线 。我无法控制用户在URL中输入的内容,因此我想获取他输入的内容,然后我就可以对其进行处理。 我已经在这里浏览过材料和答案,我认为对我而言,好的解决方案不是要求用户以某种方式对输入的参数进行编码。 SpringBoot代码很简单: 因此,URL如下所示: 问题在于,参数 modu

  • 我试图编写一个方法,它接受@PathVariable参数,并将用户重定向到一个jsp文件。 @pathvariable(value=“customerId”)字符串customerId @pathvariable(name=“customerId”)字符串customerId @pathvariable(“customerId”)字符串customerId 谢谢你的帮助。

  • 问题内容: Spring MVC(3.0)将带斜杠和不带斜杠的URL视为同一URL。 我需要在应用程序内部进行此操作(以免通过Apache重写规则等)。 一种方法是: 但这通常有两个问题: 太多的控制器 参数问题:编码错误 题 有没有一种方法可以截获所有URL,并且如果它们带有斜杠,可以将它们重定向到相对的地址而不用斜杠? 问题答案: Web配置中所需的所有重写规则 如果没有很多,你可以像这样配置

  • 问题内容: Spring MVC(3.0)将带斜杠和不带斜杠的URL视为同一URL。 例如: http://www.example.org/data/something/ 我需要用斜杠重定向URL http://www.example.org/data/something/ 到没有它的URL: http://www.example.org/data/something 我需要在应用程序内部进行此操

  • 问题内容: 斜线在这里是什么意思: 问题答案: 这实际上设置了两个属性,并且等效于: 该属性的语法基于传统的印刷速记符号来设置与字体相关的多个属性。 正如David M在评论中所说,它反映了将字体大小指定为“ x pt on y pt”以表示行高的字形大小的排版传统。 但是问题中的示例实际上是错误的,浏览器将忽略它:您只能以简写形式组合这两个属性,并且 必须 至少指定字体大小和字体。因此,仅仅写作

  • 我需要在URL中包含一个斜线来访问RabbitMQ API,并且我正在尝试使用获取数据: 当我将替换为时,我可以在请求描述符中看到已更改为,因此我得到了未找到的响应。 我尝试了以下选项: •-WebClient更改为,Rabbit返回404。 如何使用WebClient将保存在url中?