Пользовательские проверки для отображения GET с помощью pathvariable - PullRequest
0 голосов
/ 08 мая 2018

Я хочу сделать пользовательские проверки с использованием весенней загрузки для метода ниже. Я хочу проверить «id», если он отличается от a до z, от 0 до 9 и - тогда я хочу установить сообщение об ошибке и передать его в ResponseEntity ,

@ RestController

открытый класс DataController {

@Autowired      DataService dataService;

@RequestMapping("/data/{id}")
public ResponseEntity<Data> getData(@PathVariable String id)
{       
    Data messages = dataService.getData(id, Data.DataFormat.ALL);
    return new ResponseEntity<>(messages, HttpStatus.OK);
}

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Другое решение: вы можете использовать @Pattern и не забудьте использовать @Validated перед вашим классом.

@RestController
@RequestMapping("required url")
@Validated
public class yourClassName{
    @RequestMapping("/data/{id}")
    public ResponseEntity<Data> getData(@Valid @Pattern(regexp = "^[a-z0-9\\-]+$",message = "Your custom message") @PathVariable String id){       
        Data messages = dataService.getData(id, Data.DataFormat.ALL);
        return new ResponseEntity<>(messages, HttpStatus.OK);
    }
}
0 голосов
/ 08 мая 2018

Невозможно автоматически проверить один тип примитива в параметре.

Вы должны подтвердить это вручную.

Попробуйте это:

private static final Pattern ACCEPTED_CHARACTERS = Pattern.compile("^[a-z0-9\\-]+$");

@RequestMapping("/data/{id}")
public ResponseEntity<Data> getData(@PathVariable String id)
{       
    if (!ACCEPTED_CHARACTERS.matcher(id).matches()) {
      return new ResponseEntity<>("Your messge", YOUR CODE);
    }
    Data messages = dataService.getData(id, Data.DataFormat.ALL);
    return new ResponseEntity<>(messages, HttpStatus.OK);
}

В реальном приложении тест на шаблон должен выполняться в служебном классе

...