加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用rails将CURL中的params解析为JSON或XM

发布时间:2020-12-17 03:52:37 所属栏目:百科 来源:网络整理
导读:如何让rails将params解析为 JSON或XML而不是字符串?我正在使用rails 3.0.7. 这就是我想要发生的事情. Parameters: {"user"={"email"="user@blah.com","password"="[FILTERED]"}} 这是发生了什么 # controllerdef create logger.debug paramsend# curl from
如何让rails将params解析为 JSON或XML而不是字符串?我正在使用rails 3.0.7.

这就是我想要发生的事情.

Parameters: {"user"=>{"email"=>"user@blah.com","password"=>"[FILTERED]"}}

这是发生了什么

# 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"}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读