Конечная точка службы с переменной пути вызывает 404 с облачным контрактом

Я написал контракт и плагин автоматически сгенерировал тесты из него. Я вижу очень странное поведение с этими автоматически сгенерированными тестами.

Ниже приводится моя конечная точка обслуживания:

@RequestMapping(value="/check/{id}" method= RequestMethod.GET, produces = Media.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Application>> getApplications(
@PathVariable (value = "id") String id){

   return appService.findAll(id);
}

А вот и контракт:

Contract.make {
    request {
        method GET()
        url '/check/1234567'
    }
    response {
        status 200
        body("""
            {
                .........
            }
            """)
        headers {
            contentType(applicationJson())
        }
    }
}

Когда я запускаю "mvn clean install", тесты автоматически генерируются и запускаются. Это отлично работает с вышеуказанным контрактом, и тест проходит отлично.

Однако если я изменю данные в пути на "/check/12345678", они начнут давать сбой.

То, что я не могу понять, это то, что моя конечная точка - это использование пути id, который является строковым типом. Для этого типа пути любое значение должно быть хорошим. Однако работают следующие пути:

    url '/check/1234567'
    url '/check/12'
    url '/check/12347'

И следующее не работает:

    url '/check/12345678' //added just one more digit
    url '/check/aa4567'   //prepended characters 
    url '/check/123aa'    //appended characters

Было бы замечательно, если бы я мог получить объяснение об этом поведении или как его решить. Практически любая строка должна работать. Например "/check/234df-dfs-fs234fds-sdf-fssd3rr"

1 ответ

Вы можете попробовать с urlPattern вместо url, замените

url '/check/1234567'

за

urlPattern '/check/[0-9]+'
Другие вопросы по тегам