2015-12-17 2 views
6

Я новичок в Restful сервисах. Я проработал код и нашел эту строкуЗначение двоеточия (:) внутри @Path аннотация

@GET 

@Path("{image:image/.*}") 

Может кто-нибудь объяснить смысл и использовать приведенный выше синтаксис?

+0

его только часть регулярного выражения используется ... –

+0

@JunedAhsan Это не, по крайней мере, не префикс 'image:'. –

ответ

4

@Path нотация поддерживает обычные строки для соответствия пути или регулярному выражению в соответствии с шаблоном. В вашем случае

@Path("{image:image/.*}") 

, кажется, просто сопрягать образец

Пути пар {изображения} с любым рисунком, как на изображение /.*, который в основном переводит к фото/ничего, ничего здесь не ссылайтесь на слово «ничего», но его буквальное значение, то есть любой действительный текст.

Исправление: См @Sotirios Delimanolis ответ для более подробной информации. Спасибо помощнику за ввод исправлений.

3

Обозначение известно как шаблоны пути 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]".

Смежные вопросы