API POST 数组使用 HTTP gem(或 RestClient)

API POST with array using HTTP gem (or RestClient)

我遇到了这个 api 的问题,似乎无法克服困难。使用 HTTP gem (though I'm flexible and can use RestClient if that gets me an answer quicker!). Anyway, I'm having trouble posting an array. everything else is good, I just can't figure out this "itemsarray" in the printaura api found here in the addorder method: PrintAura API

我是运行这个:

def self.submitorder   
  req = HTTP.post("https://api.printaura.com/api.php", :json => { 
        :key => APIKEY, 
        :hash => APIHASH, 
        :method => "addorder",
        :businessname => "this is a secret too",
        :businesscontact => "thats a secret",
        :email => "my@email.com",
        :your_order_id => "1",
        :returnlabel => "FakeAddress",
        :clientname => "ShippingName",
        :address1 => "ShippingAddressLine1",
        :address2 => "ShippingAddressLine2",
        :city => "ShippingCity",
        :state => "ShippingState",
        :zip => "ShippingZip",
        :country => "US",
        :customerphone => "dontcallme",
        :shipping_id => "1",
        :itemsarray => {:item => [ 
            :product_id => 423,
            :brand_id => 33,
            :color_id => 498,
            :size_id => 4,
            :front_print => 1389517,
            :front_mockup => 1390615,
            :quantity => 1
          ]}

    })

  puts JSON.parse(req)




end

我的输出是这样的:

{"status"=>false, "error_code"=>19, "result"=>19, "message"=>"You cannot place an order without items, Please fill the items array with all the required information. Full API documentation can be found at https:/www.printaura.com/api/"}

天哪,如果有人能看到并帮助我,我将永远感激不已。

要在 JSON 中创建一个数组,您可以在 Ruby 中使用一个数组。就是这么简单。

require 'json'

def self.submitorder   
  req = HTTP.post("https://api.printaura.com/api.php", :json => { 
        :key => APIKEY, 
        :hash => APIHASH, 
        :method => "addorder",
        :businessname => "this is a secret too",
        :businesscontact => "thats a secret",
        :email => "my@email.com",
        :your_order_id => "1",
        :returnlabel => "FakeAddress",
        :clientname => "ShippingName",
        :address1 => "ShippingAddressLine1",
        :address2 => "ShippingAddressLine2",
        :city => "ShippingCity",
        :state => "ShippingState",
        :zip => "ShippingZip",
        :country => "US",
        :customerphone => "dontcallme",
        :shipping_id => "1",
        :items => [ 
           {
             :product_id => 423,
             :brand_id => 33,
             :color_id => 498,
             :size_id => 4,
             :front_print => 1389517,
             :front_mockup => 1390615,
             :quantity => 1
           }
        ]
    })

  puts JSON.parse(req)

API 列出了一个 items 参数,它应该包含一个对象数组。它没有提到 itemsarray

def self.submitorder 
  itemsarray = { :items => [ { :product_id => 423, :brand_id => 33, :color_id => 498, :size_id => 4, :quantity => 1, :front_print => 1389517,
        :front_mockup => 1390617 } ] }
  req = HTTP.post("https://api.printaura.com/api.php", :json => { 
    :key => APIKEY, 
    :hash => APIHASH, 
    :method => "addorder",
    :businessname => "this is a secret too",
    :businesscontact => "thats a secret",
    :email => "my@email.com",
    :your_order_id => "1",
    :returnlabel => "FakeAddress",
    :clientname => "ShippingName",
    :address1 => "ShippingAddressLine1",
    :address2 => "ShippingAddressLine2",
    :city => "ShippingCity",
    :state => "ShippingState",
    :zip => "ShippingZip",
    :country => "US",
    :customerphone => "dontcallme",
    :shipping_id => "1",
    :items =>  Base64.encode64(itemsarray.to_json)}
)

  puts JSON.parse(req)

我真的希望这对几年后的人有所帮助哈哈