curl命令行POST

时间:2011-04-29 00:47:31

标签: ruby-on-rails curl

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

当我尝试使用curl进行POST时,会在数据库中创建一条记录,但除了'updated_at'和'created_at'之外,它在字段中都有NULL值。我是命令行卷曲的新手,所以我可能没有正确地做到这一点。

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

我从WEBrick那里得到了回复:

  

在4月28日星期四18:04:47 -0600开始POST“/ flintstones”为127.0.0.1 2011由FlintstonesController处理#create as Parameters:{“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的GET后

  

curl localhost:3000 / flintstones.json

我收到:

[{ “打火石:{” 名称 “:NULL,” created_at “:” 2011-04-29T00:09:58Z”, “的updated_at”: “2011-04-29T00:09:58Z”, “ID” :4, “朋友”:空}}]

为什么我的字段中会出现空值?

提前致谢。

2 个答案:

答案 0 :(得分:22)

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

object[paramName]=paramValue

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

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

以下是我引用的来源:

答案 1 :(得分:3)

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