Вот пример, чтобы задать мой вопрос. У меня есть модель, которая содержит "ящики", и у них есть конечная точка REST:
/boxes
/boxes/{boxId}
Эта модель также содержит "узлы":
/nodes
/nodes/{nodeId}
Узлы могут сидеть на границах полей, и это отношение типа "многие-ко-многим". Наличие одного node на нескольких границах - это способ указать, что эти границы (частично) перекрываются, но узлы также имеют другие цели.
Я пытаюсь определить, как моделировать это в неудивительном, RESTful пути. Я вижу пару способов сделать это. Но я не уверен, что я должен использовать:
-
Модель
/borders
как полнофункциональный тип сущности с его собственной конечной точкой. В блоках указаны четыре границы (сверху, снизу, слева, справа). Имеют границы, ссылающиеся на список узлов. У узлов ссылаться на список границ. -
Модель
/boxNodeRelationships
со своей конечной точкой и каждая из этих отношений указывает на поле, node и содержит поле "граница" (перечисление с четырьмя параметрами).
Оба являются похожими, а скорее "тяжелыми" для их целей. Альтернатива должна быть немного более ad-hoc:
- Отображает список объектов
{ border, node }
. Дайте узлам список объектов{ box, border }
. Эти объекты будут возвращены из вызововGET
и ожидаются от вызововPOST
/PUT
, но не будут полностью полноценными типами с конечной точкой.
Я хотел бы знать, как RESTifarian решит это, а также услышит некоторые плюсы и минусы этих подходов. Я также хотел бы знать, существуют ли другие подходы, принципиально иные.