處理此問題的最佳方法是從外部應用程序可與之交互的Web應用程序提供一個API。關於Rails的一件好事是它基本上支持這個開箱即用的功能。
從網絡上查看學生的典型控制器操作。
class StudentsController < ApplicationController
def show
@student = Student.find(params[:id])
end
end
當請求被以/students/1
則students/show
模板將被渲染爲學員ID#1製成。
Rails能夠將xml/json附加到URL的末尾,以請求使用不同格式類型的處理。
class StudentsController < ApplicationController
respond_to :html, :json
def show
@student = Student.find(params[:id])
respond_with(@student)
end
end
這設置了ActionController的一個功能,叫做Responder。現在,當對/students/1.json
發出請求時,控制器將在Student模型上調用as_json
,該模型默認採用所有模型屬性並將其轉換爲json對象。這可以通過在學生模型中重寫as_json來定製。
要進行更新,您可以按照類似的模式。您使用PUT請求向/students/1.json
提交服務器。請求不在JSON中,您使用的庫可能支持設置變量,確保它是Rails預期的格式(即student[field]
)。 Rails中間件將負責其餘部分。
class StudentsController < ApplicationController
respond_to :html, :json
def update
@student = Student.find(params[:id])
@student.update_attributes(params[:student])
respond_with(@student)
end
end
注意與響應者沒有檢查,如果工作的update_attributes的respond_with
會爲你做的。如果出現錯誤,您將得到一個HTTP 422 Unprocessable Entity作爲響應代碼,並且響應的主體將是一個帶有錯誤的JSON對象。
還值得一提的是,如果您更喜歡XML響應體而不是JSON,則可以用json
和xml
代替所有這些示例。
我可以使用Java應用程序中的這些方法添加數據並創建新表嗎? – sushilthe 2013-02-28 02:27:55
更新了答案! – 2013-02-28 12:39:44
感謝您的更新 – sushilthe 2013-03-01 18:06:05