У меня есть коллекция под названием Entity
, и каждый объект имеет свойство, называемое группами.RESTful design design
{
_id: xxx,
groups: [g1, g2, g3],
others...
}
Предприятие имеет не более нескольких групп. Группы не сильно меняются, и я не храню их в отдельных коллекциях. Объект групповой массив выглядит следующим образом:
g1 = {
group_id: xxx,
name: xxx
}
Также у меня есть User
коллекции. Каждый пользователь принадлежит ровно 1 сущности и 1 группе. Таким образом, в основном у нас есть свойство, называемое user.entity
и user.group
, которое ссылается только на 1 документ сущности выше.
Когда пользователь хочет получить информацию о сущности, он может сделать GET /entity/123
. Это легко. Что относительно групп лиц? Возможные варианты:
GET /entity/123/group
или GET /group
.
Способ 1 является прямым. Вы уже говорите людям, что хотите получить группы в организации 123
. Таким образом, вы можете настроить middlewares, чтобы превратить 123
в req.entity
и сразу вернуть entity.groups
. Но для администраторов он может запросить все группы во всех сущностях, и этот API кажется неправильным?
Причина, по которой метод 2 также хорошо, потому что после получения req.user
я могу проверить req.user.entity
, объект запроса 123
и вернуть группы. Но я чувствую, что мне нужно выполнить дополнительные проверки условий, чтобы получить группы. Также, если администратор хочет запросить все группы, мы просто должны запросить с другим условием, и условия запроса могут быть беспорядочными/
Так какой лучший дизайн здесь? Есть ли что-то более RESTful, чем другое? (Кстати, один пользователь будет иметь ровно 1 группу и 1 юридическое лицо и user.entity
никогда не изменится.)
ya 2 варианта использования. мое мышление в один прекрасный день, когда кто-то переключает сущность или каждый человек принадлежит к двум сущностям, было бы сложно просто GET/groups. если я не должен принимать во внимание это. –