Можно ли использовать PathParam без каких-либо параметров в аннотации Path?

Мне известно об использовании аннотации PathParam, и стандартный способ ее использования:

@Path(/data/{id})
... getData(@PathParam("id") String id){...}

Могу ли я использовать PathParam без параметра в аннотации Path? Например:

@Path(/data)
... getData(@PathParam("id") String id){...}

Если да, что обозначает значение идентификатора строки?

Выдает ошибку в Spring Boot - MissingPathVariableException: Missing URI template variable 'id' for method parameter of type String. @Path и @PathParam относятся к JAX-RS, а не к Spring, но я думаю, что поведение должно быть таким же. Почему бы вам не попробовать запустить его вместо того, чтобы задать вопрос?

Kartik 02.11.2018 06:29

У меня есть функциональный фрагмент кода, который соответствует шаблону, упомянутому в вопросе. Отсюда вопрос. Должно быть, значение переносится из родительского класса.

Raj Dosi 02.11.2018 06:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
404
1

Ответы 1

Я думаю, что вам нужно достичь необязательного параметра пути с именем id. Вы можете добиться этого, используя следующий параметр пути с регулярным выражением:

@Path(/data/{id : (.+)?})
... getData(@PathParam("id") String id){...}

Таким образом, id будет null, если не указан параметр пути. В противном случае будет предоставлено указанное значение.

Ладно. Итак, я считаю, что реализация pathParam подразумевает наличие параметра в аннотации Path, который можно сделать необязательным, как вы предложили. Если значение отсутствует, будет выдано исключение, предложенное в комментарии @Kartik.

Raj Dosi 02.11.2018 06:55

Если вы использовали способ, предложенный @Kartik, он выдаст исключение. Но при моем подходе это будет только null. Итак, если значение отсутствует, вы получите null вместо id. Вам нужно будет проверить значение null в методе.

Imesha Sudasingha 02.11.2018 06:59

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