有一个控制器。
我提出了一个请求http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG
-我得到了404
。它没有达到方法。为什么?常规赛有什么问题?
我使用Spring Boot2。但是问题是,有一个项目,没有启动,并且有相同的映射-一切正常。
@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);
}
}
答案 0 :(得分:1)
您正在呼叫
http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG
,并且您的方法接受http://localhost:8080/api/v1/download/avatar/{path}
。
因此,您传递了两个@PathVariable
-这就是为什么您获得HTTP-404
的原因。
您必须决定是否要
@PathVariable("id") long id, @PathVariable("path") String path
具有2个路径变量 或
@PathVariable("path") String path
一个。
此外,除了上述内容外,不需要添加一些类似regexp的东西。
@PathVariable("path") String path
在您的论点中应该能很好地发挥作用。