【问题标题】:how to query restful rails app with curl?如何使用 curl 查询 restful rails 应用程序?
【发布时间】:2010-11-16 04:50:32
【问题描述】:

这是我的问题.. 资源:用户 方法:创建

我这样称呼 curl:

curl -X POST -H 'Content-type: text/xml' -d '<xml><login>john</login><password>123456</password></xml>' http://0.0.0.0:3000/users

但是 rails 中的参数哈希看起来像这样:

{"xml"=> {"login"=>"luca", "password"=>"123456"}}

我希望它看起来像这样:

{"login"=>"luca", "password"=>"123456"}

如果我在url上传递参数(...?login=luca&pas ....),我可以让它变成这样,但这并不好...

有什么想法吗?

【问题讨论】:

  • 在您的 XML 字符串中将 'xml' 替换为 'user' 有帮助吗?
  • 不.. 我尝试了所有可能的变体.. xml 用户用户请求 params 参数发布.. 我不认为这是要走的路..

标签: ruby-on-rails xml http curl rest


【解决方案1】:
curl -X POST -d 'login=john&password=123456' http://0.0.0.0:3000/users

另请参阅:Stack Overflow: How do I make a POST request with curl

【讨论】:

  • 好的,所以关键是如果我想要真正的 xml,我必须有一个根并重新调整我的控制器,否则我可以使用 var=value&... 语法传递变量。谢谢
【解决方案2】:
curl -X POST -H 'Content-type: text/xml' -d '<login>john</login><password>123456</password>' http://0.0.0.0:3000/users

这对你有什么影响?

收到您的评论后,为什么不通过控制器中的 params[:xml] 访问它,而不是通过 params[:login] 和 params[:password] 访问它?

@user = User.authenticate(params[:xml])

这会将登录名和密码传递给您的模型。

【讨论】:

  • 你不能添加 2 个节点.. 你会得到:"attempted added second root element to document"
  • 是的,这就是我现在绕过问题的方式,但我希望能更好地理解为什么它不起作用..
  • 它不起作用,因为 'john123456' 不是格式良好的 XML 文档。根节点结束于 。对于根节点和不朽者,“只能有一个”。 :)
【解决方案3】:

嘿,我也有这个问题很长一段时间。我发现你可以做到这一点 -

在初始化器目录中创建一个新的 defaults.rb:yourapp/config/initializers/defaults.rb

ActiveRecord::Base.include_root_in_json = false

现在根应该从你的 json 中消失了。

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多