用于将多个记录传递到POST请求以向Rails API创建动作的JSON?

时间:2019-07-10 08:41:36

标签: ruby-on-rails rails-api

我有一个使用

构建的简单API
rails new my_api --api

然后

rails g scaffold Model name age

我可以使用curl POST请求进行新记录

curl -H "Accept: application/json" -H "Content-type: application/json" -d '{"name": "Fred", "age": "5"}' "http://localhost:3000/model_name"

问题

是否可以在同一POST请求中提交多个新记录?如果是这样,JSON应该是什么样的?

到目前为止我尝试过的一切

我尝试过{"name": "Fred", "age": "5"}的变体,例如{"name": ["Fred", "Mary"], "age": ["5", "6"]}

API不会拒绝此JSON,而是创建1条记录(而不是2条),其值为nil而不是实际数据。

注意

当前控制器代码为

  def create
    @model = Model.new(model_params)

    if @model.save
      render json: @model, status: :created, location: @model
    else
      render json: @model.errors, status: :unprocessable_entity
    end
  end

1 个答案:

答案 0 :(得分:2)

答案很简单,是

您构建了API,您确切定义了POST请求将收到的内容以及如何处理它。但是,Rails scaffold自动生成的create方法不会一次在JSON中接受多个记录。您必须打开controller生成的rails scaffold文件,并将其更改为接受多个记录。

还有一点提示,请尝试针对具有多个记录的JSON使用以下结构:

[{"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}]