Я разрабатываю REST API сервиса и застрял на правильном способе вложения ресурсов.
Ресурсы: партнеры, тикеты, настройки
Связи между ресурсами:
- у партнера много билетов,
- партнер имеет набор настроек,
Деловая логика:
- Вы можете перечислить всех партнеров в качестве анонимного пользователя,
- Вы можете добавить новый билет для указанного партнера в качестве анонимного пользователя,
- только партнер может перечислить свои билеты,
- только партнер может изменить свои билеты,
- только партнер может перечислить настройки,
- только партнер может изменять настройки,
Что я делал до сих пор:
Партнерские ресурсы
GET / partners - список всех партнеров
GET / partners /: id - показать детали партнера, указанного: параметром id
GET / partners /: partner_id / tickets - список билетов
партнера GET / partners /: partner_id / tickets /: id - подробности указанного билета
партнера POST / partners /: partner_id / tickets - сохраняет новый билет
PUT / partners /: partner_id / tickets /: id - обновляет билет, указанный в параметре: идентификатор
GET / partners /: partner_id / settings - список настроек партнера
PUT / partners /: partner_id / settings - обновить настройки партнера
Проблема / Вопрос
Будет ли правильным способом разделять вложенные ресурсы (тикеты, настройки) на отдельные ресурсы или дублировать их как отдельные ресурсы?
Например
GET / tickets /: ID
POST / Билеты
PUT / Билеты /: ID
GET / настройки
PUT / настройки
источник
/partners/:partner_id/tickets
включить в список некоторые полезные данные для каждого тикета, а не только его канонический URI. Например, в JSON может быть[{href='/tickets/12',value=10,due='2013-08-13'},{href='/tickets/18',value=7,due='2013-09-02'}]
так, чтобы клиент мог сразу показать некоторую таблицу и GET / PUT полный ресурс (ы) тикета для дополнительной манипуляции.DELETE /tickets/:id
?