2013-06-14 17 views
13

I jak przetestować backend API, który jest przeznaczony, jak pokazano w poniższym przykładzie:Jak publikować wartości tablic za pośrednictwem curl?

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

Reakcja JSON:

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

Tutaj odpowiedni model:

# 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 

Chcę użyć curl, aby przetestować tworzenie i aktualizację wpisu. Dlatego używam następujące polecenia:

Utwórz:

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

Aktualizacja:

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

Wartość products muszą zostać złożone w postaci tablicy. Kiedy uruchomić powyższe polecenia zwracany jest następujący komunikat:

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

Jak muszę napisać wartości tablicy products więc działa z zwinięcie?

Odpowiedz

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

Co jeśli mam istniejącą tablicę, którą chcę dodać? Czy to oczyści tablicę produktów i zastąpi ją tymi dwoma produktami? A może przyłączy je do listy istniejących produktów? (Chciałbym znaleźć sposób na zrobienie tego drugiego) –

+0

@TomHammond Myślę, że powinieneś zamieścić to jako osobne pytanie, chętnie Ci odpowiem! –

+0

Oczywiście - oto moje pytanie: http://stackoverflow.com/questions/22327098/how-to-update-array-values-with-curl –

Powiązane problemy