I’m trying to do
@GetMapping(value = "/vault/{key}", produces = "application/json") public ResponseEntity<VaultEntity> getEntity( @RequestHeader HttpHeaders headers, @RequestHeader(name = "X-Vault-Token") String token, HttpServletRequest request, @PathVariable(name = "key") String key) { log.info(String.format("%s provided token: %s for key %s", headers.getHost(), token, request.getRequestURI())); return vaultService.findByKey(request.getRequestURI(), key, token); }
but I want it to match:
/vault/key /vault/key/key1 /vault/key/key2/key3
and so on
I tried regular expression matching but came up with nothing. What would be the best way to do this?
Advertisement
Answer
you can try like this if key is a static
@RequestMapping(value={"/vault/key", "/vault/key/key1", "/vault/key/key1"}, method = RequestMethod.GET) public ResponseEntity<VaultEntity> getEntity( @RequestHeader HttpHeaders headers, @RequestHeader(name = "X-Vault-Token") String token, HttpServletRequest request, @PathVariable(name = "key") String key) { log.info(String.format("%s provided token: %s for key %s", headers.getHost(), token, request.getRequestURI())); return vaultService.findByKey(request.getRequestURI(), key, token); }
if key is a dynamic
@RequestMapping(value={"/vault/{key}", "/vault/{key}/{key1}", "/vault/{key}/{key1}/{key3}"}, method = RequestMethod.GET) public ResponseEntity<VaultEntity> getEntity( @PathVariable("key") String key, @PathVariable("key1") String key1, @PathVariable("key3") String key3, @RequestHeader HttpHeaders headers, @RequestHeader(name = "X-Vault-Token") String token,HttpServletRequest request, @PathVariable(name = "key") String key) { log.info(String.format("%s provided token: %s for key %s", headers.getHost(), token, request.getRequestURI())); return vaultService.findByKey(request.getRequestURI(), key, token); }