【问题标题】:curl command line POSTcurl 命令行 POST
【发布时间】:2011-08-15 03:55:27
【问题描述】:

我正在尝试向我的简单 Rails 脚手架 Web 服务模拟 POST。脚手架创建的文件未更改。当我从网站表单发布数据时,会正确创建一条记录。

当我尝试使用 curl 进行 POST 时,会在数据库中创建一条记录,但它在字段中具有 NULL 值,但“updated_at”和“created_at”除外。我是命令行 curl 的新手,所以我可能做得不对。

curl -d "name=Gazoo&friend=Rubble" localhost:3000/flintstones

我从 WEBrick 得到这个:

于 2011 年 4 月 28 日星期四 18:04:47 -0600 2011 年 4 月 28 日星期四 18:04:47 -0600 开始 POST "/flintstones" 由 FlintstonesController#create 作为参数处理:{"name"=>"Gazoo", "friend"=>"Rubble "} AREL (0.3ms) INSERT INTO "flintstones" ("name", "friend", "created_at", "updated_at") VALUES (NULL, NULL, '2011-04-29 00:04:47.779902', '2011 -04-29 00:04:47.779902') 重定向到http://localhost:3000/flintstones/4

在获取 json 之后

curl localhost:3000/flintstones.json

我收到:

[{"燧石:{"name":null,"created_at":"2011-04-29T00:09:58Z","updated_at":"2011-04-29T00:09:58Z","id" :4,"朋友":null}}]

为什么我的字段为空?

提前致谢。

【问题讨论】:

  • 似乎 url 参数没有传递给 sql 插入,而是插入了 NULL。
  • 没错,丹。我的问题是为什么?

标签: ruby-on-rails curl


【解决方案1】:

我用谷歌搜索了一下,每个使用 curl 和 rails web 服务的例子都显示了以格式传递的参数

object[paramName]=paramValue

以及为每个参数设置一个-d,这将使您的 CURL 语句看起来像

curl -d "flintstone[name]=Gazoo" -d "flintstone[friend]=Rubble" localhost:3000/flintstones

以下是我引用的来源:

【讨论】:

  • 谢谢杰夫。我看过你引用的第二个来源,这没有帮助。第一个,我没见过,很有帮助。您上面的解决方案成功了。现在开始为我的试用 iOS 应用程序使用 ASIHttpFormRequest 或 RestKIT。
  • 展示良好的格式如何使博客文章对读者更有效率。
  • 如果您还需要身份验证,请查看此处:robots.thoughtbot.com/curling-with-rails-authenticity-token。也可以使用 & 组合多个参数
【解决方案2】:

Rails(默认情况下)不会以提供的方式“name=Gazoo&friend=Rubble”查找帖子正文。它寻找这个方案 - 假设你的模型是 Flintstones 并且你的字段是名字和朋友 - “Flintstone[name]=Gazoo&Flintstone[friend]=Rubble”。这是 Rail 的 DSL,用于来自表单帖子的帖子正文。

【讨论】:

    猜你喜欢
    • 2015-12-31
    • 1970-01-01
    • 2011-03-01
    • 2012-08-03
    • 2011-09-07
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多