Проверка формата даты Swagger Java вызывает исключение

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

Рабочий код Java:

@Test
public void test1() {
    String regex = "^((19|20)\\d\\d)(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])$";
    Assert.assertTrue("Date: matched.", Pattern.matches(regex, "19881231")); -- true
}

Swagger Contract.yml

properties:
  lineofValue:
    type: string
    pattern: ^AB|CD$
    description:  mandatory
  date:
    type: string
    pattern: ^((19|20)\\d\\d)(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])$
    description:  mandatory

Пример запроса:

{
"lineofValue":"AB"
"date":"19881231"
}

Исключение :

{
   "code": "400",
   "status": 400,
   "message": "Validation Failed: ECMA 262 regex \"^((19|20)\\\\d\\\\d)(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])$\" does not match input string \"19881231\""
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просматривая Swagger Documentation, кажется, что вам не надо нужно экранировать символ / так же, как вам нужно сделать в Java:

properties:
  lineofValue:
    type: string
    pattern: ^AB|CD$
    description:  mandatory
  date:
    type: string
    pattern: ^((19|20)\d\d)(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])$
    description:  mandatory

Спасибо npinti за ваш ответ

sunleo 30.11.2018 09:11

Другие вопросы по теме