Мне известно об использовании аннотации PathParam, и стандартный способ ее использования:
@Path(/data/{id})
... getData(@PathParam("id") String id){...}
Могу ли я использовать PathParam без параметра в аннотации Path? Например:
@Path(/data)
... getData(@PathParam("id") String id){...}
Если да, что обозначает значение идентификатора строки?
У меня есть функциональный фрагмент кода, который соответствует шаблону, упомянутому в вопросе. Отсюда вопрос. Должно быть, значение переносится из родительского класса.




Я думаю, что вам нужно достичь необязательного параметра пути с именем id. Вы можете добиться этого, используя следующий параметр пути с регулярным выражением:
@Path(/data/{id : (.+)?})
... getData(@PathParam("id") String id){...}
Таким образом, id будет null, если не указан параметр пути. В противном случае будет предоставлено указанное значение.
Ладно. Итак, я считаю, что реализация pathParam подразумевает наличие параметра в аннотации Path, который можно сделать необязательным, как вы предложили. Если значение отсутствует, будет выдано исключение, предложенное в комментарии @Kartik.
Если вы использовали способ, предложенный @Kartik, он выдаст исключение. Но при моем подходе это будет только null. Итак, если значение отсутствует, вы получите null вместо id. Вам нужно будет проверить значение null в методе.
Выдает ошибку в Spring Boot -
MissingPathVariableException: Missing URI template variable 'id' for method parameter of type String.@Pathи@PathParamотносятся к JAX-RS, а не к Spring, но я думаю, что поведение должно быть таким же. Почему бы вам не попробовать запустить его вместо того, чтобы задать вопрос?