请求中多个项目的 BigCommerce "Put" 属性

BigCommerce "Put" properties for multiple items in a request

我正在与 BigCommerce API 合作,使用我创建的 REST 服务,我已经能够使用每个产品的产品 ID 成功更新产品的数量。这是我如何做的一个例子:

HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential(username, api_key);
handler.Proxy = null;
handler.UseProxy = false;
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("MyStoresURL");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

string productInventory = "My Product Inventory";
var setQty = new { inventory_level = productInventory };
string productID = "Product ID to be updated";
string url = string.Format("products/{0}", productID);
var response = client.PutAsJsonAsync(url, setQty).Result;
//StatusCode: 200 "OK"

问题是处理 20,000 件产品可能需要几个小时。我正在寻找一种方法来一次或至少分批更新所有产品库存。所有 BigCommerce 文档都解释了如何更新单个产品或订单、客户等,但不是一次全部更新。

我觉得这很奇怪,因为您可以通过商店的门户网站手动上传包含所有产品的 CSV 文件,而 BigCommerce 将使用该文件更新您的库存。我正在寻找一种自动执行此操作的方法。这是我尝试过的导致状态 400 "bad request".

的示例
HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential(username, 
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("My Store");
handler.Proxy = null;
string url = string.Format("products.json?page={0}", counter);

HttpResponseMessage response = new HttpResponseMessage();

List<ProductQTY> productQty = new List<ProductQTY>();

response = client.GetAsync(url).Result;
//This returns a json string with the first 50 products 
//and all their attributes including Quantity.

productQty = response.Content.ReadAsAsync<List<ProductQTY>>().Result;
//This converts the response into a list of 50 Products.
//Here I update the quantity of each product.

string json = Newtonsoft.Json.JsonConvert.SerializeObject(productQty);
//convert my product list back into json.

response = client.PutAsJsonAsync(url, json).Result;
//StatusCode: 400 "Bad Request"

前面的代码将进入一个循环,从每个页面下载 50 个产品。

我也试过将我下载的那个 50 计数 json 字符串上传回同一个 url 但它从来没有用过。

简而言之。这使用 HTTPClient:

成功更新了产品的库存
string inventory = "10";
string bcID = "10001";
var setInv = new { inventory_level = inventory };
string url = string.Format("products/{0}", bcID);
var response = client.PutAsJsonAsync(url, setInv).Result;

那么有没有办法一次更新多个产品?

分享这个因为有人可能有同样的问题。我知道我已经到处搜索此信息但找不到它。

我直接从 BigCommerce 支持那里得到了答案。我之前曾问过,但没有得到答案,因为我们没有使用他们的 API 支持包,但来自 BC 的一位乐于助人的人终于给了我答案。引用:

"It is not currently possible to update multiple product inventories at once via the API. It can only be done product by product."

他们确实提到他们正在努力在未来添加此功能。

就是这样。我会手动更新我的库存,或者我会看看等待时间是否可以接受。

它不是批处理,但您可以通过一次更新多个(4,8 等)项来大大缩短时间。 我自己正在研究使用 API,并遇到了这个 post。我想我会计划使用 ASYNC/AWAIT