如何通过curl发布数组值?

JJD*_*JJD 13 arrays rest post curl ruby-on-rails

我喜欢测试API后端,其设计如下例所示:

http://localhost:3000/api/v1/shops/1.json
Run Code Online (Sandbox Code Playgroud)

JSON响应:

{
  id: 1,
  name: "Supermarket",
  products: [
    "fruit",
    "eggs"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是相应的型号:

# app/models/shop.rb
class Shop < ActiveRecord::Base
  extend Enumerize
  attr_accessible :name, :products

  serialize :products, Array
  enumerize :products, in: %w{fruit meat eggs}, multiple: true

  resourcify

  validates :name, presence: true, length: { in: 5..50 }    
  validates :products, presence: true
end
Run Code Online (Sandbox Code Playgroud)

我想使用curl来测试创建和更新条目.因此,我使用以下命令:

创建:

$ curl -X POST http://localhost:3000/api/v1/shops.json -d \
  "shop[name]=Supermarket&shop[products]=fruit,eggs&auth_token=a1b2c3d4"
Run Code Online (Sandbox Code Playgroud)

更新:

$ curl -X PUT http://localhost:3000/api/v1/shops/1.json -d \
  "shop[name]=Supermarket&&shop[products]=fruit,eggs&auth_token=a1b2c3d4"
Run Code Online (Sandbox Code Playgroud)

products需要作为数组提交的值.当我运行上面的命令时,返回以下消息:

{"errors":{"products":["is invalid"]}
Run Code Online (Sandbox Code Playgroud)

我如何编写products数组的值,以便它与curl一起使用

Mik*_*del 16

$ curl -X POST http://localhost:3000/api/v1/shops.json -d \
  "shop[name]=Supermarket \
  &shop[products][]=fruit \
  &shop[products][]=eggs \
  &auth_token=a1b2c3d4"
Run Code Online (Sandbox Code Playgroud)