Я пишу весенний контракт для простого API, который получает номер учетной записи и возвращает «хороший» ответ, если эта учетная запись существует в базе данных, или «плохой» ответ в противном случае. Как указать в контракте «плохой» ответ, если запрос, вызывающий «плохие» ответы, имеет тот же формат, что и «хороший» запрос?
Мои Java классы:
@PostMapping("/postrequest")
public AccountDto postMethod(@RequestBody FindAccountRequest rq){
return service.findAccountByNumber(rq);
}
public class FindAccountRequest {
String accountNumber;
}
public class AccountDto {
Integer balance;
Integer errorCode;
}
Контракты:
Contract.make {
request {
description("Existing account — good response")
method POST()
url '/postrequest'
headers { contentType(applicationJson()) }
body( [ accountNumber: $( regex('[0-9]{20}') ) ] )
}
response {
status 200
headers { contentType(applicationJson()) }
body( [balance: anyInteger()] )
}
}
Contract.make {
request {
description("Nonexistent account — bad response")
method POST()
url '/postrequest'
headers { contentType(applicationJson()) }
body( [ accountNumber: $( regex('[0-9]{20}') ) ])
}
response {
status 200
headers { contentType(applicationJson()) }
body( [errorCode: anyInteger()] )
}
}
Запрос:
{
accountNumber: "12345678901234567890"
}