2012-06-29 2 views
3

Я развиваю спокойный webapp. В этом параметрах я принимаю userid и orderid.REST, как передать пустые параметры пути в URI?

userid может быть null.
URI, является @Path("api/user/userid/order/orderid") Мой метод,

void add(@PathParam("userid") String userId, @PathParam("orderid") String orderId); 

Я хочу передать нулевое значение для userId в URI.

Я пробовал api/user//order/1234. Но в этом случае userid принимает значение orderId (т.е. 1234 и orderId является null. (Что неправильно)

Я также попытался изменить путь, @Path("api/user/userid: .*/order/orderid"). Тем не менее, тот же результат, что и предыдущий.

другие способы решения это может быть, используя @QueryParam для userid или создания другого способа userid null.

Но я хотел бы знать, если есть способ, чтобы иметь userId, как PathParameter вместо QueryParam и передать значение userid как null?

+1

Почему идентификатор пользователя недействителен? Что будет делать ваше приложение, если оно равно нулю? – Corwin01

ответ

6

Наличие параметра URL как null не является допустимым случаем.

POSTING к URL api/user/userid/order/orderid говорит «создайте заказ для этого пользователя». GETting к тому же самому URL-адресу сказал бы «получить мне этот конкретный заказ для этого пользователя». Оба они находятся в контексте пользователя.

Для создания делать заказ или извлечение вне контекста пользователя, просто удалите эти две части вашего URL ...

api/order/orderid 

Это позволит вам создавать и получать заказы за пределами границ клиент. Это также будет работать в контексте пользователя. Если вы заказываете заказ без идентификатора пользователя, никто не заботится, но его можно указать. И если вы получите заказ, ему не важно, для какого клиента он нужен, если ваш идентификатор orderID не уникален для всех клиентов, но это, вероятно, не очень хорошая идея, но это отдельное обсуждение.

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