java - @RequestMapping(value = "v1/firewall/policy/{zoneId:.*\\D+.*}") 是做什么的?

标签 java rest spring-boot

我很难理解以下 Rest 端点正在执行的操作 - 更具体地说,value = "v1/firewall/policy/{zoneId:.*\\D+.*}"部分:

   @RequestMapping(
        method = {RequestMethod.PUT, RequestMethod.POST},
        value = "/v1/firewall/policy/{zoneId:.*\\D+.*}",
        headers = "Accept=application/json"
)
public ResponseEntity post_policy(@RequestBody InformationPolicy informationPolicy,
                                  @RequestHeader("deployment-id") String deploymentId) {

    someService.process(policyInformation, deploymentId);

    return createResponse(new RestStatus(HttpStatus.OK));

}

我知道我应该为 "{zoneId:.*\\D+.*}" 传递一些值,我之前从未见过这种格式 (zoneId :.*\\D+.*) -- 那到底是什么?

最佳答案

冒号后面的部分是正则表达式。 \D 表示“非数字”,因此zodeid部分必须包含非数字,即

OK:     /v1/firewall/policy/12X
Not OK: /v1/firewall/policy/123

仅供引用,+ 表示“至少一个”,可以删除而不会产生任何影响,因为一个是至少一个。

顺便说一句,我上次尝试时,如果您希望值中包含点,则必须使用允许点的正则表达式,例如 field:.*,因为默认行为不允许点.

关于java - @RequestMapping(value = "v1/firewall/policy/{zoneId:.*\\D+.*}") 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265517/

相关文章:

java - 使用selenium选择网页中的元素

rest - 基于 SSL 的 AngularJS RESTful

swift - 快速从请求响应中获取 header 数据

rest - REST Web 服务中的 GET 与 POST

java - 将未编码的对象传递给 Camel 处理器

java - 注册-Spring Boot-MongoDb-主键替换新数据

java - 如何比较三个组合框并在文本框或标签中显示结果?

Javafx 表格行边框导致内部元素移动

java - JUnit 测试方法可以有参数吗?

java - 刷新浏览器时,使用 cookies(java + React) 转到最后完成的步骤