2011-01-26 8 views
1

Мы разрабатываем API REST для сложной модели данных. Модель скорее напоминает дерево.Обработка нескольких действий в одном вызове REST

TOPObject 
    Name: XX 
    Start Date: 01/10/2011 
    End Date: 02/18/2011 
    List 
    NestedObject 
     Name: NO1 
     Code: CCC1 
    NestedObject 
     Name: NO2 
     Code: CCC2 

Внутри клиента они могут работать над всем этим объектом на одном экране и сразу же отправлять все изменения. Я не хочу разделить ресурсы на два вызова: один для TOPObject и один для NestedObject. Я хотел бы сделать один вызов POST для TOPObject.

Как справиться с несколькими изменениями на разных уровнях в иерархии. Например, если они меняют объект таким образом.

TOPObject 
    Name: XY /* changed */ 
    Start Date: 01/10/2011 
    End Date: 02/18/2011 
    List 
    NestedObject 
     Name: NO1 
     Code: CCC1 
    /* Notice that NesteObject NO2 was removed as well */ 
    NestedObject /* added */ 
     Name: NO3 
     Code: CCC3 

Таким образом, для одного вызова существуют три различных действия: добавление, обновление и удаление. Они должны выполняться как одна транзакция.

У нас была идея отправить «действие» с данными, но это не звучит RESTful для меня. Какие-либо предложения.

ответ

2

Фактически, все, что вы делаете, это изменение вашего TOPObject. Удаление объекта NestedObject можно рассматривать как обновление поля. Я ожидал бы, что сможет отправить PUT (или POST) с моим TopObject, поскольку я хочу, чтобы он был после изменений и получил 200 OK назад, возможно со ссылкой на GET, что информация обратно.

Смежные вопросы