2010-11-01 2 views
0

Можно ли определить путь с необязательными переменными пути.RestEasy @Path Вопрос с регулярным выражением

как Ури ниже:

/приложение/сделать/{сделать}/модель/{модель}/год/{год}/пробег/{пробег}/fuelType/{fuelType}/maxPrice/{maxprice }/transmission/{transmission}/engineSize/{engineSize}

URI может состоять из любых 0 или более комбинаций параметров? Есть ли способ сказать, что все эти пути являются необязательными?

ура.

ответ

3
@Path("/make/{make}{model:(/model/[^/]+)?}{fuel : (/fuel/[^/]+)?}{gearbox : (/gearbox/[^/]+)?}/cars") 



app/{make:(/make/[^/]+)?}{model:(/model/[^/]+)?}{year:(/year/[^/]+)?}{mileage:(/mileage/[^/]+)?} 

Я придумал вышеописанное решение, которое работает, но внутри метода мне нужно удалить путь.

3

Зачем использовать сегменты пути? Если они являются необязательными параметрами, то это не может быть реальной иерархией, поэтому почему бы просто не использовать параметры строки запроса. Они работают намного лучше для этого типа параметра.

+0

Хорошо, что требования docs говорят так, и там другое аппаратное обеспечение также использует тот же синтаксис URI, поэтому я не могу его просто изменить. Тем не менее, вы правы, если это необязательно, оно должно обычно входить в параметры строки запроса. – fmucar

+0

@fmu. Одним из основных моментов ограничения гипермедиа является то, что структура URI сервера должна быть частной детализацией реализации. Тот факт, что у вас есть спецификации, определяющие, какие URI должны выглядеть, означает, что кто-то планирует писать клиенты, которые будут создавать эти URI. Это просто неправильно. Теперь перед вами стоит задача убедить серверную инфраструктуру работать с структурой URI, которой это не удобно, что совершенно противоположно тому, как она должна работать. Я понимаю, что я выпускаю не того человека, но все равно он чувствовал себя хорошо :-) –

+0

Это приложение для отдыха, которое также будет использоваться сторонними приложениями. Если они не знают URI, как они будут использовать его? – fmucar

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