spring boot requestMapping @RequestMapping(value =“/ {userId:\\ d +}”,method = RequestMethod.DELETE)

时间:2018-04-10 07:32:00

标签: java spring-boot request-mapping

    @RequestMapping(value = "/{userId:\\d+}", method = RequestMethod.DELETE)
    public void delete(@PathVariable Long userId) {
        try{
            this.authorService.delete(userId);
        }catch(Exception e){
            throw new RuntimeException("delete error");
        }
    }

任何人都知道我应该为这个定义“/ {userId:\ d +}”匹配什么网址,你能给我一个例子,比如“/ userid = 1”,这是对的吗?

我猜这个定义就像这个“/ {userId:\ d +}”,在url中使用正则表达式来确保它传递一个数字参数。我不确定,如果有人知道,请给我一个链接进一步学习,谢谢!

2 个答案:

答案 0 :(得分:0)

不,该表达式映射/1例如所有数字。

  

语法{varName:regex}声明一个带有正则表达式的URI变量,其语法为{varName:regex} - 例如给定URL" /spring-web-3.0.5 .jar",以下方法提取名称,版本和文件扩展名:

@GetMapping("/{name:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{ext:\\.[a-z]+}")
public void handle(@PathVariable String version, @PathVariable String ext) {
    // ...
}

查看完整的文档here

答案 1 :(得分:0)

它会匹配任何数字。例如,

/1/11/123

/{userId:\\d+} ===>将/之后的一个或多个数字映射到变量userId 一个或多个数字的正则表达式为\d+,但由于您将其用作字符串,因此需要使用其他\对其进行转义。