Как проверить параметр пути в микропрофиле

Здесь 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-компонента.

Руководство по проверке параметров компонента:

  1. https://quarkus.io/guides/validation
  2. https://microprofile.io/2019/07/11/validate-your-microservices-with-microprofile-and-bean-validation
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Похоже, виноват тип параметра:

Строковый ключ

https://javadoc.io/doc/jakarta.validation/jakarta.validation-api/latest/jakarta/validation/constraints/Max.html

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).

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