代码之家  ›  专栏  ›  技术社区  ›  kramsiv94

@RequestMapping(value=“v1/firewall/policy”是什么意思/{区域ID:。*\\你要做什么?

  •  1
  • kramsiv94  · 技术社区  · 6 年前

    我很难理解下面的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+.*) --那是什么鬼东西?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Bohemian    6 年前

    冒号后面的部分是regex。 \D 表示非数字,因此zodeid部分必须包含非数字,即

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

    + ,这意味着至少有一个,可以删除而不产生任何影响,因为一个是至少一个。

    顺便说一句,上次我试过,如果你想在你的值中有点,你必须使用一个正则表达式,允许点,例如 field:.*