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