0

我使用 Rails 创建了一个 REST 服务器,用于管理用户和相关的评论
这是路由配置。

resources :users do
  resources :comments
end

在控制器中,我只需要查询和创建Comments的操作。交换格式为 JSON。

class CommentsController < ApplicationController

  def index
    @user = User.find(params[:user_id])
    @comments = @user.comments  
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @comments }
    end
  end

  def create
    @user = User.find(params[:user_id])
    @comment = @user.comments.create!(params[:comment])
    redirect_to @user
  end

end

我想存储远程客户端创建的评论。它是一个安卓应用程序。为了测试服务器,我正在尝试以下curl命令,如此处所建议

curl -X POST -d @comment1.json http://localhost:3000/users/42/comments
curl -X POST -d @comment1.json http://localhost:3000/users/42/comments.json
curl -X POST -d @comment2.json http://localhost:3000/users/42/comments
curl -X POST -d @comment2.json http://localhost:3000/users/42/comments.json

我也不确定 JSON 文件的外观。以下是我尝试过的变体:
comment1.json

{
  content:
  {
    message: "Let's see if this works.",
    subject: "JSON via curl"
  }
}

...或comment2.json

{
  message: "Let's see if this works.",
  subject: "JSON via curl"
}

当我检查特定用户的评论时,我可以看到它已经创建,但是,我传递的参数和,在某个地方丢失了!subjectmessage

[
  {
    created_at: "2012-08-11T20:00:00Z",
    id: 6,
    message: "null",
    subject: "null",
    updated_at: "2012-08-11T20:00:00Z",
    user_id: 42
  }
]

Rails 安装包括以下 gem。

...
Using multi_json (1.3.6) 
Using json (1.7.4)
...

问题:

  • 如何通过curl或任何其他合适的工具测试评论的创建?
4

1 回答 1

4

尝试使用. _ -H "Content-Type:application/json"我认为 Rails 正在寻找 post 参数作为表单数据(例如。content[subject]='JSON via curl')。

此外,JSON 文件无效。JSON 键也需要被引用。使用以下文件...

{
  "message": "Let's see if this works.",
  "subject": "JSON via curl"
}

并使用以下命令之一发送...

curl -X POST -H "Content-Type:application/json" -d @comments2.json http://localhost:3000/users/42/comments
curl -X POST -H "Content-Type:application/json" -d @comments2.json http://localhost:3000/users/42/comments.json
于 2012-08-11T21:30:52.943 回答