Я новичок в Restful
сервисах. Я проработал код и нашел эту строкуЗначение двоеточия (:) внутри @Path аннотация
@GET
@Path("{image:image/.*}")
Может кто-нибудь объяснить смысл и использовать приведенный выше синтаксис?
Я новичок в Restful
сервисах. Я проработал код и нашел эту строкуЗначение двоеточия (:) внутри @Path аннотация
@GET
@Path("{image:image/.*}")
Может кто-нибудь объяснить смысл и использовать приведенный выше синтаксис?
@Path
нотация поддерживает обычные строки для соответствия пути или регулярному выражению в соответствии с шаблоном. В вашем случае
@Path("{image:image/.*}")
, кажется, просто сопрягать образец
Пути пар {изображения} с любым рисунком, как на изображение /.*, который в основном переводит к фото/ничего, ничего здесь не ссылайтесь на слово «ничего», но его буквальное значение, то есть любой действительный текст.
Исправление: См @Sotirios Delimanolis ответ для более подробной информации. Спасибо помощнику за ввод исправлений.
Обозначение известно как шаблоны пути URI и описано в documentation.
Вы определяете новую переменную шаблона, объявляя ее в скобках {}
. Среда JX-RS привяжет соответствующий сегмент пути от запрошенного URI к объявленному параметру метода обработчика @PathParam
.
Из документации
шаблонов URI путей являются идентификаторами URI с переменными, заложенными в синтаксисе URI . Эти переменные заменяются во время выполнения, чтобы ресурс отвечал на запрос на основе замещенного URI. Переменные обозначаются скобами (
{
и}
). Например, посмотрите на следующие@Path
аннотацию:@Path("https://stackoverflow.com/users/{username}")
В такого рода, например, пользователю будет предложено ввести его или ее имя, , а затем веб-службы JAX-RS, выполненный с возможностью реагировать на запросы на Этот шаблон шаблона URI отвечает. Например, если пользователь имя пользователя «Галилео» веб-сервис отвечает следующему адрес:
http://example.com/users/Galileo
Чтобы получить значение имени пользователя,
@PathParam
аннотаций могут быть используется на метод параметр метода запроса, как показано в примере следующего кода:@Path("https://stackoverflow.com/users/{username}") public class UserResource { @GET @Produces("text/xml") public String getUser(@PathParam("username") String userName) { ... } }
документация затем переходит к указать синтаксис для обозначения
По умолчанию переменная URI должен соответствовать регулярному выражению «[^ /] +?". Эти переменные может быть настроены путем указания другого регулярного выражения после имени переменной. Например, если имя пользователя должно состоять только из строчных и заглавных букв и символов, переопределить регулярное выражение по умолчанию в переменных определение:.
@Path("users/{username: [a-zA-Z][a-zA-Z_0-9]}")
В этом примере переменная имя пользователя будет соответствовать только имена пользователей, которые начинаются с одной прописной или строчной буквы и ноль или более буквенно-цифровых символов и символа подчеркивания Если имя пользователя d oes не соответствует этому шаблону, ответ 404 (Not Found) будет отправлен клиенту .
Так что ваш пример
@Path("{image:image/.*}")
определяет переменную шаблона URI с именем image
, который содержит сегмент, соответствующий регулярному выражению
image/.*
Среда JAX-RS, следовательно, будет использовать аннотированный метод для запросов для URI, соответствующих
http://somehost.com/context-path/image/[anything]
Предположительно, ваш метод будет иметь параметр
@Path("{image:image/.*}")
public Response handle(@PathParam("image") String path) { /* handling */ }
и path
будет иметь значение "image/[anything]"
.
его только часть регулярного выражения используется ... –
@JunedAhsan Это не, по крайней мере, не префикс 'image:'. –