2012-03-21 4 views
0

Предположим, у нас есть счет-фактура, сохраненная в состоянии проекта в РСУБД. Счет состоит из трех позиций. Клиент-клиент получает счет-фактуру и изменяет позиции.Как обновить вложенные данные из запроса PUT

GET/счета/123

{ 
    "InvoiceId" : "123", 
    "lineitems": 
    [ 
     { "id":"A", "qty":"5"}, 
     { "id":"B", "qty":"5"}, 
    ] 
} 

Предположим, пользователь изменяет фактуру следующим образом; изменения количества Пункт А Удаляет Item B. Добавляет новый элемент C.

Результат:

{ 
    "InvoiceId" : "123", 
    "lineitems": 
    [ 
     { "id":"A", "qty":"10"}, 
     { "id":"D", "qty":"5"},  
    ] 
} 

Чистое изменение в том, что линия была удалена, линия была обновлена, и добавлена ​​строка.

Затем пользователь сохраняет черновик счета, в результате которого возникает запрос PUT.

PUT/счет/123

Что является лучшей стратегией для обновления позиции на сервере?

Имейте в виду, что deleteing все позиции и создавать их с нуля будет терять любые мета-данные по этим линиям (сотворяемые, дате создания, последнего изменения по ...)

Спасибо,

ответ

0

Метод PUT запрашивает, чтобы закрытый объект хранился в соответствии с предоставленным Request-URI.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

PUT Придумайте, как заменить. Состояние ресурса в запросе PUT должно быть результирующим состоянием ресурса, если оно принято.

Если вы хотите добавить/удалить/обновить определенные элементы, вы должны изучить с помощью PATCH.

+0

Моделирование с субресурсами - это другой способ, который позволяет битам, которые были изменены, обновляться напрямую. –

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