我有一个使用
构建的简单APIrails 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
答案 0 :(得分:2)
答案很简单,是
您构建了API,您确切定义了POST
请求将收到的内容以及如何处理它。但是,Rails scaffold
自动生成的create
方法不会一次在JSON
中接受多个记录。您必须打开controller
生成的rails scaffold
文件,并将其更改为接受多个记录。
还有一点提示,请尝试针对具有多个记录的JSON
使用以下结构:
[{"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}, {"name": "Fred", "age": "5"}]