Рестлет: могу ли я иметь две функции Get, направленные в один и тот же класс Resource? - PullRequest
0 голосов
/ 25 июня 2011

У меня есть ресурс под названием "Item", имеющий следующие поля:

  • Id
  • Имя
  • Описание

Iхотите, чтобы пользователь мог получать элементы из базы данных, указав идентификатор или имя.например, если у меня есть эта запись в базе данных: (1, дом, это дом), соответствующий (id, имя, описание), то если пользователь отправляет запрос Get, указывающий, что

  • id = 1

или

  • name = "table"

это должно вернуть запись: (1, Таблица, этоТаблица).Вопрос в том, могу ли я сделать это в рестлете?можно маршрутизировать маршрутизатор / Item / {itemId} и / Item / {itemName} в один и тот же класс ItemResource?в этом случае я должен иметь две реализации для функции getrepresentation?

1 Ответ

0 голосов
/ 04 июня 2012

Вы можете перенаправить / Item / {itemId} и / Item / {itemName} к одному и тому же классу ресурсов, но, как написал комментатор (почти год назад!), Вы рискуете двусмысленности, если пространства имен id и name не пересекаются. Лучшим дизайном было бы иметь два ресурса:

/Item?name=MyName
/Item/1234

Первым из них будет поисковый ресурс, который возвращает все элементы с именем MyName. Второй просто найдет уникальный предмет 1234.

Вы можете реализовать это с одним классом ресурсов, но это будет выглядеть аккуратно как два отдельных класса ресурсов (возможно, с общим абстрактным суперклассом).

...