Spring中的正则表达式无法正常工作

时间:2019-01-25 12:11:17

标签: spring spring-boot spring-mvc path-variables

有一个控制器。

我提出了一个请求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);
    }

}

1 个答案:

答案 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 

在您的论点中应该能很好地发挥作用。