Я хочу знать, как спроектировать API RESTFUL для одновременного создания ресурса и связанных с ним ресурсов.
Например, я хочу создать заказ, содержащий список элементов, используя мой RESTFUL API,например:
{
order_id:1,
description: "XXX",
items: [
{item_id:1, price:30, ...},
{item_id:2, price:40, ...}
]
}
Один способ - дать два api
- post:
api/orders
=> создать новый заказ и вернуть идентификатор заказа - post:
api/orders/id/items
=> создать связанные элементы с помощью идентификатора заказа
Однако заказ и элементы должны создаваться вместе. Поэтому, если второй API потерпел неудачу, он создаст заказ без какого-либо элемента внутри, и это ситуация, которую я не хочу видеть. На самом деле я хочу, чтобы бэкэнд-сервер выполнял транзакцию и одновременно создавал заказ и элементы, он должен быть успешным или неудачным.
Итак, это хороший способ поместить элементы в тело запроса? и опубликовать только один раз на api/orders
? Или есть другой лучший дизайн для этой ситуации?
Спасибо!