Я реализую API, совместимый с JSON API V1, с использованием Grape API, который использует AR в качестве ORM. Я немного запутался в формате создания вложенных ресурсов/отношений. Похоже, нам нужно создавать по одному ресурсу за раз и можно ссылаться на существующие ресурсы. Но мы не можем, скажем, создавать записи для отношения has many в том же запросе.
Моя ситуация: есть модальный Donation. В нем много Split. Раскол принадлежит Fund. Мне нужно создать пожертвование с несколькими сплитами.
Вопрос. Как структурировать API в соответствии с рекомендациями JSON:API?
Просматривая документацию несколько раз, я думаю, что не могу сделать пожертвование за один вызов API, и мне придется создавать каждый ресурс отдельно, и может быть выполнена окончательная фиксация, чтобы инициировать пожертвование.
Шаг 1. Создайте пожертвование – предполагается, что возвращается идентификатор 100.
ПОСТ /api/v1/donations
{ type: "donation", data: { comments: "abc" } }
Шаг 2: Создайте Split 1
ПОСТ /api/v1/splits
{
type: "split",
data: { amount: 100_00 },
relationships: {
data: [{ type: "fund", id: 5 }, { type: "donation", id: 100 }]
}
}
Наконец: инициируйте пожертвование чем-то вроде
ПАТЧ /api/v1/donations/100
{
type: "donation"
data: {
state: "process"
}
}
Есть ли способ создать его в одном запросе?