2014-09-23 13 views
1

我的iOS應用程序針對Rails應用程序工作。假設我有TeamMember模型,並且在iOS應用程序中,我需要使用單個請求創建/更新多個團隊成員(以事務方式 - 如果出現問題,所有人都應該保存或完全失敗)。糾正REST-ful方式在單個請求中創建/更新同一資源的多個對象

示例:是它確定發送POST/team_members與身體:

[ 
    { 
     "name": "Tom" 
    }, 
    { 
     "name": "Derek" 
    } 
    ... 
] 

讓我感到困惑的是,我的理論性JSON示例具有數組而不是單記錄散列,這通常是發佈POST/team_member的單個團隊成員記錄時的情況。 PUT/team_members請求也是如此。

我會非常感謝任何能夠向我解釋如何或有可能以RESTful方式完成此任務的人?

回答

0

我認爲這應該是可能的,但您的服務合同必須根據數組來定義。

你的服務將決定它是否有效,並且應該處理它是事務性的。

+0

感謝您的回答。我知道技術上可以用數組來定義。這個問題更可能是關於完成這個的RESTful方式。 – 2014-09-23 16:39:22

+0

只要你在你的數組元素中有一些ID,我認爲這可以像獲取數組一樣安穩。 – Pieter21 2014-09-23 17:23:09

0

的routes.rb

resources :team_member_batches 

控制器

class TeamMemberBatchesController < ApplicationController 

    def create 
     t = TeamMemberBatch.new(team_member_attributes: JSON.parse(params[:team_member_attributes])) 
     if t.save 
      # All good 
     else 
      # Something went wrong... 
     end 
    end 
end 

模型(當然不是一個真正的模型,但確定)

class TeamMemberBatch 

    attr_accessor :team_members 

    def initialize(atts) 
    self.team_members = [] 

    atts.each do |team_member_attributes| 
     self.team_members << TeamMember.new(team_member_attributes) 
    end 
    end 

    def save 
    unless team_members.all.map(&:valid?).uniq.include?(false) 
     team_members.all.map(&:save) 
     true 
    end 

    false 
    end 
end 
+0

我已經對我的回答做了一些編輯 – 2014-09-23 16:45:43

+0

Marcello,謝謝你的回答。我也想過這樣實施它。然而,阻止我開始這樣做的原因是,我想如果在一個真實的項目中,我有類似30-50個實際資源的項目,這些資源的+ 5-10個這樣的中間資源(這些資源沒有指向真實的資源),項目將變成一團糟?你真的在你的真實項目中以這種方式組織你的批量資源請求嗎? – 2014-09-23 16:48:31

+0

此外,儘管此解決方案__seems__爲RESTful,但我實際上不確定創建此類中間資源是否在語義上正確,僅用於在一個請求中創建批記錄的目的。你怎麼看? – 2014-09-23 16:49:26

相關問題