Spring 请求映射与正则表达式如 javax.ws.rs

Art*_*zyn 8 java regex mapping spring javax.ws.rs

我正在尝试将此 Google App Engine Maven 服务器存储库重写为 Spring。

我有 URL 映射问题。Maven 回购服务器标准如下所示:

  1. 以斜线结尾的 URL 指向一个文件夹,例如:

    http://127.0.0.1/testDir/
    http://127.0.0.1/testDir/testDir2/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 所有其他(末尾没有斜线)指向文件,例如:

    http://127.0.0.1/testFile.jar
    http://127.0.0.1/testFile.jar.sha1
    http://127.0.0.1/testDir/testFile2.pom
    http://127.0.0.1/testDir/testFile2.pom.md5
    
    Run Code Online (Sandbox Code Playgroud)

目录文件的原始应用程序映射。

使用了@javax.ws.rs.Path与 Spring 不同的支持正则表达式的注释。

我尝试了一堆组合,例如这样的:

http://127.0.0.1/testDir/
http://127.0.0.1/testDir/testDir2/
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在 Spring 应用程序中以正确的方式做到这一点。

我想避免编写自定义 servlet 调度程序。

Ily*_*nko -1

尝试这个解决方案:

@GetMapping("**/{file:.+?\\..+}")
public String processFile(@PathVariable String file, HttpServletRequest request) {   
    return "test1 " + file;
}

@GetMapping("**/{dirName:\\w+}")
public String processDirectory(@PathVariable String dirName, HttpServletRequest request) {
    String dirPath = request.getRequestURI();
    return "test2 " + dirPath;
}
Run Code Online (Sandbox Code Playgroud)

问题中 URI 的结果:

test2 /testDir/
test2 /testDir/testDir2/

test1 testFile.jar
test1 testFile.jar.sha1
test1 testFile2.pom
test1 testFile2.pom.md5    
Run Code Online (Sandbox Code Playgroud)