2015-08-24 1 views
1

Я разработал API, у которого есть несколько вложенных ресурсов, и мне интересно, как уменьшить количество POSTS, когда я создаю некоторые записи.REST API - Уменьшить количество операций POSTS

, например, у меня есть следующие ресурсы:

/orders/ 

и

/orders/{order_id}/products/ 

на данный момент мне нужно запустить два POST отдельно, если мне нужно создать новый заказ или новый заказ-х но я хотел бы сократить время для этого и запустить только один POST. Возможно ли это? есть ли какая-нибудь документация, которую я могу прочитать об этом?

Спасибо

+0

Я думаю, что я нашел свой ответ здесь: http://stackoverflow.com/questions/14275257/rest-creating-nested-resources-with-single-post# – MeV

ответ

0

Хотя вы, возможно, нашли ответ на свой вопрос в другом потоке есть еще какой-то вопрос относительно вашей конечной конструкции.

Первая интуиция, которую ваша конечная точка дает, заключается в том, что ресурс продукта может существовать в нескольких местах.

./orders/{order_id}/products/{prod_id} 

./products/{prod_id} 

Вопрос, который вы должны задать себе: Вы действительно хотите обратиться к продукту? Можно ли оставить продукт за пределами любых заказов?

Наличие ресурса, сидящего в 2 разных местах, возможно, не так уж велико, поскольку вы управляете двумя разными конечными точками с аналогичным поведением. Сохранять согласованность между конечными точками не так просто.

Мой 2 цента заключается в том, чтобы избежать термина продукта, поскольку его можно путать с одним экземпляром продукта. Например, если вы продаете toothbrush branded AAA, sku 1234 заказ не заносится о данном товаре, а одним товаром, который у вас есть на складе. Элемент является «экземпляром» toothbrush branded AAA, sku 1234.

Как я понимаю ваш вопрос, вы на самом деле не ссылаетесь на продукт, но больше на stock-item, который должен быть уникальным идентификатором.

Ресурс stock-item, если вы решили, что он должен существовать до заказа. Я предполагаю, что клиент не добавляет товар на ваш склад и в то же время покупает этот товар.

В заключение я думаю, что вы не создаете ресурс stock-item вообще при создании orders, а просто ссылаетесь на него.

+0

Я ожидаю, '/ продукта/{ prodId} ', чтобы быть ресурсом для продукта до его добавления в заказ, тогда как'/orders/{orderId}/products/{prodId} 'будет конечной точкой для конкретного экземпляра продукта, который был добавлен в приказ. Более конкретный ресурс, вероятно, разрешит только операции PUT или DELETE. Вы либо добавляете, либо удаляете ссылку на продукт в заказе. Однако '/ products/{prodId}' разрешает операции GET и PUT, так как позволяет вам получить или заменить продукт на данном ресурсе. – crush

+0

Почему бы и нет. Но опять же для перспективы клиента не очевидно, что это такое. REST стремится быть самостоятельным объяснением. – mathk

+0

Я думаю, что это было бы довольно очевидно, на самом деле. Один из них явно связан с порядком, а другой - нет. Если вы считаете, что им нужны явно разные имена, то это ваша прерогатива, но я не думаю, что REST обязывает то, что вы здесь изложили. – crush