Dan*_*Dan 4 xml api json ruby-on-rails ruby-on-rails-3
如何让rails将params解析为JSON或XML而不是字符串?我正在使用rails 3.0.7.
这就是我想要发生的事情.
Parameters: {"user"=>{"email"=>"user@blah.com", "password"=>"[FILTERED]"}}
Run Code Online (Sandbox Code Playgroud)
这是发生了什么
# controller
def create
logger.debug params
end
# curl from command line
curl -i -H 'Content-Type:application/xml' -H 'Accept:application/xml' -X POST -d "<user><email>user@blah.com</email><password>password</password></user>" http://localhost:3000/api/v1/sessions.xml
# response
Started POST "/api/v1/sessions" for 127.0.0.1 at 2011-05-14 02:16:23 -0700
Processing by Api::V1::SessionsController#create as XML
Parameters: {"<user><email>user@blah.com</email><password>password</password></user>"}
{"<user><email>user@blah.com</email><password>password</password></user>", "action"=>"create", "controller"=>"api/v1/sessions", "format"=>"xml"}
Run Code Online (Sandbox Code Playgroud)
JSON也是如此.
HTTP POST通常是名称/值对.
Rails正在尽最大努力找出你传递给它的东西并把它变成一个params哈希,但它确实没有意义.
您可以直接访问该请求:
def create
string = request.body.read
# if string is xml
object = Hash.from_xml(string)
# elsif string is JSON
object = ActiveSupport::JSON.decode(string)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7256 次 |
| 最近记录: |