【问题标题】:spring boot requestMapping @RequestMapping(value = "/{userId:\\d+}", method = RequestMethod.DELETE)spring boot requestMapping @RequestMapping(value = "/{userId:\\d+}", method = RequestMethod.DELETE)
【发布时间】:2018-04-10 16:04:08
【问题描述】:
    @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+}”匹配什么 url,你能给我一个例子,比如“/userid=1”,对吗?

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

【问题讨论】:

    标签: java spring-boot request-mapping


    【解决方案1】:

    不,该表达式映射/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

    【讨论】:

      【解决方案2】:

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

      /1/11/123

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 2021-09-26
        相关资源
        最近更新 更多