2013-06-14 9 views
13

Ich mag eine API-Backend testen, die wie dargestellt in dem folgenden Beispiel bestimmt ist:Wie array Werte über curl?

http://localhost:3000/api/v1/shops/1.json 

Die JSON Antwort:

{ 
    id: 1, 
    name: "Supermarket", 
    products: [ 
    "fruit", 
    "eggs" 
    ] 
} 

Hier ist das entsprechende Modell:

# 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 

Ich möchte curl verwenden, um das Erstellen und Aktualisieren eines Eintrags zu testen. Daher verwende ich die folgenden Befehle:

erstellen:

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

Update:

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

Der Wert für products müssen als Array vorgelegt werden. Wenn ich die oben genannten Befehle die folgende Meldung ausgeführt wird zurückgegeben:

{"errors":{"products":["is invalid"]} 

Wie muss ich die Werte des products Array schreiben, so dass es mit curl arbeitet?

Antwort

16
$ curl -X POST http://localhost:3000/api/v1/shops.json -d \ 
    "shop[name]=Supermarket \ 
    &shop[products][]=fruit \ 
    &shop[products][]=eggs \ 
    &auth_token=a1b2c3d4" 
+0

Was ist, wenn ich ein bestehendes Array habe, das ich hinzufügen möchte? Würde dies das Produkt-Array löschen und durch diese beiden Produkte ersetzen? Oder würde es sie an die Liste der bestehenden Produkte anhängen? (Ich würde gerne einen Weg finden, Letzteres zu tun) –

+0

@TomHammond Ich denke, du solltest dies als eine separate Frage veröffentlichen, ich werde dir gerne antworten! –

+0

Sicher Sache - hier ist meine Frage: http://stackoverflow.com/questions/222327098/how-to-update-array-values-with-curl –