我应该使用哪个HTTP谓词向集合中添加许多项


Which HTTP verb should I use to add many items to a collection?

在REST中,如果要替换整个集合,请使用:

PUT with /resourses
params=[{name:'Daniel', age:'19'}, {name: 'John', age: '17'}]

如果你想创建一个新项目,你可以使用:

POST with /resources
params={name:'Daniel', age:'19'}

我不想要它们中的任何一个,我想要的是在不需要调用的情况下向资源中添加许多项目

POST /resources

多次

我在找这样的东西:

STRANGEVERB /resources
params=[{name:'Daniel', age:'19'}, {name: 'John', age: '17'}]

将它们添加到现有集合

使用POST,只需在服务器端检查数组或单个对象是否已POST。不要试图编造HTTP动词。

如果您觉得有必要在此处分离路由,请使用不同的URL。

我建议不要编造HTTP动词。如果要创建新对象,请使用POST谓词。此外,批处理POST不是一个好主意,因为每个对象可能由于不同的原因而失败或成功,这将发出不同的消息。现在你必须处理这些。

许多SaaS提供商(包括像37 Signals这样的顶级提供商)实现单个对象POSTs是有原因的。这样,您就可以单独处理每个对象。

如果您真的要执行批处理POST s,那么请遵循RESTful方法并创建一个代表批处理的资源,并仅在内部运行对象处理,但成功创建时仍将返回一个代码,如201,如果是多状态响应,则返回207。

祝你好运。

我会遍历哈希数组并单独创建每个对象。这是最好的做法,这是有原因的,大卫。

persons = [{:name => "Joe", :age => 10},{:name => "Blow", :age => 10}]
persons.each do |person|
  Person.create(person)
end