Конечная точка службы с переменной пути вызывает 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]+'