Spring PathVariable中的Regexp无法正常工作

Spring PathVariable中的Regexp无法正常工作,spring,spring-boot,spring-mvc,path-variables,Spring,Spring Boot,Spring Mvc,Path Variables,有一个控制器 我提出请求http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG-我得到了404。它没有达到这个方法。为什么?常规赛有什么问题 我用弹簧靴2。但问题是,有一个项目,没有启动,有相同的映射-一切正常 @Controller @RequestMapping("/api/v1/download") public class DownloadRestController { private final

有一个控制器


我提出请求
http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG
-我得到了
404
。它没有达到这个方法。为什么?常规赛有什么问题

我用弹簧靴2。但问题是,有一个项目,没有启动,有相同的映射-一切正常

@Controller
@RequestMapping("/api/v1/download")
public class DownloadRestController {

    private final DownloadService downloadService;

    @Autowired
    public DownloadRestController(DownloadService downloadService) {
        this.downloadService = downloadService;
    }

    @RequestMapping(value = "/avatar/{path:.*}")
    public void download(HttpServletRequest request, @PathVariable String path) {
        this.downloadService.download(request, "/avatar/"+path);
    }

}
你在打电话吗

http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG

并且您的方法接受
http://localhost:8080/api/v1/download/avatar/{path}

因此,您要传递两个
@PathVariable
s-这就是为什么您要获得
HTTP-404
。 你必须决定你是否想要

@PathVariable("id") long id, @PathVariable("path") String path
具有2个路径变量 或

只有一个

此外,为了补充上述内容,放置一些类似regexp的东西对您来说是不必要的

@PathVariable("path") String path 

你的论点应该很有效。

你为什么要这样做?你就不能有一个普通的字符串吗?@Pijotrek no.
/avatar/
之后的数据是动态的。是的,那么呢
/avatar/{path}
@PathVariable(“path”)字符串路径应该可以工作。不需要
*
之类的东西。请试试。@Pijotrek不工作-404。
http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG
-看,有两个路径变量
/1
/GtAHWk3EVjBcltY.JPG
,因此您的错误我不需要解析每个参数。我想对所有文件进行通用请求。在另一个项目中,如果没有Spring Boot,这项工作将非常完美。但这里是-404。但代码是一样的。当你用两个路径变量调用并且只接受一个时,它将永远是404。好的。但是为什么这个
/avatar/{path:.*}
可以在Spring5的其他项目中工作呢?我不知道。但我很确定,如果你应用我的更改,它会对你有用。只需添加
@PathVariable(“id”)长id
/avatar/{id}/{path}
@Tsyklop您尝试过吗?有帮助吗?
@PathVariable("path") String path