В Mokky можно сделать связь One-to-One между двумя ресурсами. Это бывает полезно, когда мы хотим, например, вместе со списком новостей выводить и самих авторов, которые хранятся в другом ресурсе.
Представим, что у нас есть два ресурса:
/users
Copy [
{
"id": 1,
"name": "Вася Пупкин"
},
{
"id": 2,
"name": "Акакий Арачимарович"
}
]
/orders
Copy [
{
"id": 1,
"name": "Хлеб",
"user_id": 1,
},
{
"id": 2,
"name": "Вода",
"user_id": 1,
},
{
"id": 3,
"name": "Котлеты с пюрешкой",
"user_id": 2,
}
]
И мы хотим сделать так, что при получении всех заказов (orders), возвращались вместе с заказами сами пользователи (вместо user_id).
Для этого, в самом запросе добавляем параметр _relations
в который можем через запятую передать все связи.
В нашем случае достаточно указать так:
Copy
https://XXX.mokky.dev/orders?_relations=users
И в итоге нам вернётся следующий ответ:
Ответ от сервера
Copy [
{
"id": 1,
"name": "Хлеб",
"user": {
"id": 1,
"name": "Вася Пупкин"
},
},
{
"id": 2,
"name": "Вода",
"user": {
"id": 1,
"name": "Вася Пупкин"
},
},
{
"id": 3,
"name": "Котлеты с пюрешкой",
"user": {
"id": 2,
"name": "Акакий Арачимарович"
}
}
]
Главное, чтобы имя параметра в объекте, которое обращается к другому ресурсу было в единственном числе и содержало {name}_id
Если у нас есть ресурс /posts , то свойство должно называться post_id
Если /patients то свойство в объектах patient_id
Правила именования полей для связи
✅ Правильно: user_id, post_id, order_id, notification_id и т.п.
Copy {
"id": 151,
"name": "Заголовок новости",
"user_id": 1,
}
{
"id": 1,
"name": "Новость удалена модератором",
"post_id": 151,
}
{
"id": 1,
"name": "Заказ #177 оформлен успешно!",
"order_id": 177,
}
❌ Неправильно: users_id, id_user, userId, posts_id, user, post и т.п.
Copy {
"id": 151,
"name": "Заголовок новости",
"userId": 1,
}
{
"id": 1,
"name": "Пользователь Вася Пупкин заблокирован",
"id_user": 1,
}
{
"id": 1,
"name": "Вася Пупкин написал комментарий",
"user": 1,
}