当您超出产品库存时,Shopify 购物车 API 不会 return 422

Shopify Cart API does not return 422 when you exceed product inventory

根据 documentation,当您尝试向购物车中添加的产品多于库存产品时,您应该会收到 422 响应。我的问题是,无论我添加多少项,我都会收到 200 的响应。

这些人遇到了同样的问题:

https://community.shopify.com/c/Shopify-Design/AJAX-POST-cart-add-js-NEVER-returns-422-only-200-OK-on/td-p/375736

https://community.shopify.com/c/Shopify-APIs-SDKs/AJAX-API-Only-sends-error-with-jQuery/td-p/341248

他们的解决方案的要点是将以下内容添加到 headers,显然默认情况下仅添加 jQuery:

X-Requested-With: XMLHttpRequest

我也用 jQuery 尝试过,但没有成功,用 Axios 添加 headers 也没有用(我确认它确实被包含在内):

updateProduct = async (update) => {
    this.setState({ processing: true }, async () => {
        const { data, status } = await axios.post(
            '/cart/update.js',
            update,
            {
                headers: { 'X-Requested-With': 'XMLHttpRequest' },
            },
        );

        console.log('data = ', data);
        console.log('status = ', status);
        
        if (status === 200) {
            this.setState({ data, processing: false });
        }
    });
};

我的理解是,在过去几年中已经进行了一些更新以防止机器人滥用库存数据,但是我应该如何确保我的自定义购物车不允许您添加超过可用数量的商品,如果我无法收到任何类型的错误响应?

我是不是做错了或者我需要更改某些 Shopify 设置?

我错过了这个:

使用 /cart/add.js 而不是 /cart/update.js 可以解决问题。