Magento 2 REST API获取含特殊字符SKU的子产品信息报错
Magento 2 REST API SKU含特殊字符触发Nonce错误的解决办法
问题场景
调用/rest/V1/configurable-products/{sku}/children接口获取可配置产品子产品时,SKU包含特殊字符(如Risk + Box)会触发错误:
The nonce is already being used by the consumer with ID %1","parameters":["10"]
尝试过多种URL编码方式均无效:
"[base_url]/rest/V1/configurable-products/Risk+%2B+Box/children" "[base_url]/rest/V1/configurable-products/Risk + Box/children" "[base_url]/rest/V1/configurable-products/Risk%20+%20Box/children"
解决方法
1. 严格编码SKU中的所有特殊字符
URL路径里的每个特殊字符都需要单独编码:
- 空格编码为
%20 - 加号
+编码为%2B
正确的请求URL应为:
[base_url]/rest/V1/configurable-products/Risk%20%2B%20Box/children
之前的错误是仅编码了部分特殊字符,导致Magento无法正确解析SKU,进而触发nonce验证异常。
2. 改用POST请求传递SKU(推荐)
避开URL路径传参的编码坑,改用POST请求到/rest/V1/configurable-products/children接口,在请求体中直接传原始SKU:
请求体示例(JSON格式):
{ "sku": "Risk + Box" }
这种方式无需手动编码SKU,Magento能直接正确识别。
3. 清理缓存并验证消费者密钥
如果上述方法仍无效,执行以下操作:
- 清理Magento缓存:
bin/magento cache:flush - 检查并重新生成API消费者密钥,排除密钥关联的nonce缓存异常。
内容的提问来源于stack exchange,提问作者tomi
相关产品推荐
相关产品推荐

