Установить ограничение размера для параметра запроса - PullRequest
1 голос
/ 19 марта 2019

В настоящее время у меня есть такой API:

    @GetMapping(/user/{id})
    public ResponseEntity<MyClass> getById(@PathVariable @Max(value = Long.MAX_VALUE, message= ID_LENGTH_EXCEED_MESSAGE) Long id) {
      //some code here 
        return  new ResponseEntity<>(HttpStatus.OK);
    }

Проблема в том, когда я использую API следующим образом:

    {baseUrl}/user/1111111111111111111111111111111111111111111

Я получаю сообщение об ошибке, подобное этому:

    Failed to convert value of type 'java.lang.String' to required type 'long'; 
    nested exception is java.lang.NumberFormatException: For input string: 
    "1111111111111111111111111111111111111111111"

Есть ли у вас какие-либо идеи, как ограничить длину значения в переменной пути или даже в параметре запроса и получить настраиваемое сообщение с ограничениями?

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Кажется, что Java не может обработать слишком большое число как int или long, поэтому обрабатывайте как строку и используйте свойство length строки для обработки и анализа в int или long.

Примечание: если длинастроки слишком длинная, чем может поддерживать целое число или длинная, затем используйте функцию возврата или любую функцию обратного вызова.

Диапазон переменных Java: -

enter image description here

0 голосов
/ 19 марта 2019
  1. Измените входной параметр (id) этого метода службы остальных с Long на String
    , затем проверьте длину строки и выполните проверку здесь
  2. Затем преобразуйте этоСтроковое значение для long, как показано ниже:

    Long idValue = Long.valueOf(Id);

    Теперь добавьте свой существующий код здесь

0 голосов
/ 19 марта 2019

Здесь описано, как генерировать пользовательские ошибки.Я бы предложил принять String как value для идентификатора пользователя.Если синтаксический анализ value не удался, вы можете выдать свою пользовательскую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...