Здесь key
— pathParam. И даже если я отправлю значение ключа больше 9. Он отправляет мне действительный ответ вместо того, чтобы выдавать ошибку проверки.
Запрос на скручивание -
curl --location --request GET 'localhost:8080/v1/batch-tokens/11/action/count'
Код -
@Path("/v1/batch-tokens")
public class BatchTokenResource implements Serializable {
private static final Logger LOGGER = Logger.getLogger(BatchTokenResource.class.getName());
private static final String LOG_HEADER = "[" + BatchTokenResource.class.getSimpleName() + "]::";
@GET
@Path("/{key}/action/count")
public Response countTokenPerKey(
@PathParam("key") @Min(value = 0) @Max(value = 9)
@Pattern(regexp = "^\\d$") String key
) {
LOGGER.log(Level.INFO, () -> LOG_HEADER + "countTokenPerKey " +
"key = " + key
);
try {
Long tokenCount = 100L;
return Response.ok(new TokenModel(key, tokenCount)).build();
} catch (Exception ex) {
LOGGER.log(Level.WARNING, () -> LOG_HEADER + "countTokenPerKey failed." +
"key = " + key +
"exception = " + ex.getMessage()
);
throw ex;
}
}
}
Я пытался искать на quarkus.io/guide и в Интернете, но нашел только документы для проверки параметров bean-компонента.
Руководство по проверке параметров компонента:
Похоже, виноват тип параметра:
Строковый ключ
Supported types are:
BigDecimal
BigInteger
byte, short, int, long, and their respective wrappers
Note that double and float are not supported due to rounding errors (some providers might provide some approximative support).