有沒有一種簡單的方法可以使用Rails在JSON中將數據返回到Web服務客戶端?如何通過使用Rails的Web服務以JSON格式公開數據?
6
A
回答
10
Rails資源爲您的模型提供了一個RESTful接口。讓我們來看看。
型號
class Contact < ActiveRecord::Base
...
end
路線
map.resources :contacts
控制器
class ContactsController < ApplicationController
...
def show
@contact = Contact.find(params[:id]
respond_to do |format|
format.html
format.xml {render :xml => @contact}
format.js {render :json => @contact.json}
end
end
...
end
所以這給你一個API接口,無需定義特殊的方法來得到響應的類型所需
例如。
/contacts/1 # Responds with regular html page
/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes
/contacts/1.js # Responds with json output of Contact.find(1) and its attributes
4
2
Rails的monkeypatches你會在乎有#to_json
方法最多的事。
關於我的頭頂,您可以對散列,數組和ActiveRecord對象進行操作,它應該覆蓋您可能需要的大約95%的用例。如果你有自己的自定義對象,那麼爲它們編寫你自己的to_json
方法是微不足道的,它可以將數據插入散列,然後返回jsonized散列。
1
有一個插件,不只是這個, http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/
而且從我個人理解這個功能已經在軌道上。但去看看那篇博文,有代碼示例和解釋。
0
ActiveRecord還提供了與JSON進行交互的方法。要從AR對象中創建JSON,只需調用object.to_json。爲了用JSON創建一個AR對象,你應該能夠創建一個新的AR對象,然後調用object.from_json ..就我所知,但這對我並不適用。
相關問題
- 1. 如何通過Web服務公開數據庫類?
- 2. 公開Web服務,通過WordPress的
- 3. 通過Web服務公開DLL
- 4. 如何通過WCF數據服務公開相關數據?
- 5. 如何通過AJAX調用Web服務來返回Json數據?
- 6. 如何使用Meteor公開REST風格的Web服務
- 7. 什麼是通過Web服務公開SQL Server數據庫的最佳方式
- 8. 如何使用ESB上的JSON代理服務公開SOAP數據服務?
- 9. 尋找公開的JSON WCF Web服務
- 10. 如何從prestashop web服務獲取json格式的數據
- 11. 如何使Web服務公開
- 12. 通過一個Web服務使用JSON
- 13. 如何通過WCF數據服務公開TimeSpan?
- 14. Web服務公開一個通用數據庫
- 15. 如何使用JSON數據過去到Web服務器在Python
- 16. REST Web服務JSON格式
- 17. 使用json數據的Web服務必然是REST Web服務?
- 18. 如何通過ajax將JSON數據傳遞給restful web服務以及如何獲取JSON數據?
- 19. 我可以通過WCF使用REST和SOAP公開服務嗎?
- 20. 如何通過textinput數組以json格式發送數據
- 21. 何時通過ESB公開服務?
- 22. 通過JSON/Web Service公開這些數據的最佳方式是什麼?
- 23. 如何查找Web服務是否以XML或JSON格式返回數據?
- 24. 以json格式使用WCF服務
- 25. 如何通過REST以及本地公開使用Java編寫的服務?
- 26. 通過WCF數據服務公開LinqToSQL業務層
- 27. 使用REST Web服務公開數據庫
- 28. 通過使用web服務
- 29. 如何公開發布java web服務?
- 30. Hybris Commerce - 如何公開Web服務
monkeypatches?我不知道這意味着什麼,但我可以猜到它是指向大多數(如果不是全部的話)對象提供該方法 – 2008-09-12 16:53:30
它修補現有對象,添加方法或在存在的情況下更改方法。這真的只是動態的語言擴展。 – 2008-12-09 17:20:52