2013-11-13 7 views
0

Рассмотрим приведенную ниже схему примера, так как вы можете видеть, что полк имеет отношения «многие ко многим» с подрядчиками, которые могут быть одинаковыми для нескольких полков.REST избежать дублирования усилий

enter image description here

Если я должен создать два полка с несколькими сотнями общих подрядчиков я в основном загрузить два раза одни и те же подрядчики на сервер:

<regiments> 
<regiment> 
     <contractors> 
     <conctractor> 
     <id>1</id> 
     ... 
     </contractor> 
     <conctractor> 
     <id>2</id> 
     ... 
     </contractor> 
     </contractors> 
</regiment> 
<regiment> 
     <contractors> 
     <conctractor> 
     <id>2</id> 
     ... 
     </contractor> 
     <conctractor> 
     <id>5</id> 
     ... 
     </contractor> 
     </contractors> 
</regiment> 
</regiments> 

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

Обратите внимание, что объект-подрядчик очень большой и имеет подписи, поэтому повторная загрузка даже одного подрядчика - это большая потеря времени и ресурсов для сервера.

Как я могу избежать повторной загрузки одних и тех же подрядчиков?

+0

является подрядчиком адресуемые как ресурс своей собственной? Если да, вы можете просто ссылаться на него в полку. –

+0

Да Я могу обратиться к подрядчику и добавить его с помощью REST PUT. Однако, если мне нужно связать N полков с подрядчиком, мне нужно будет загрузить N полков с повторным повторением для каждого. Это трата, о которой я говорю. –

ответ

1

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

<regiments> 
<regiment> 
     <contractors> 
     <contractor-ref uri="/contractors/1"/> 
     <contractor-ref uri="/contractors/2"/> 
     </contractors> 
</regiment> 
<regiment> 
     <contractors> 
     <contractor-ref uri="/contractors/2"/> 
     <contractor-ref uri="/contractors/5"/> 
     </contractors> 
</regiment> 
</regiments> 
+0

Как, например, Джерси сериализует и де-сериализует эти URI? Если бы вы могли обогатить ответ некоторым примером кода, чтобы манипулировать URI, это было бы полезно. –

+0

Это будет зависеть от используемой серверной технологии. Мне показалось, что вы задавали концептуальный вопрос о REST, а не о том, как реализовать такую ​​схему на сервере. Если вы хотите ответить на вопрос реализации, спросите, пожалуйста, вопрос реализации. –

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