WooCommerce API:正确传递含+号邮箱地址的方法
解决WooCommerce API传递含+号邮箱的404问题
问题描述
尝试通过以下两种方式调用WooCommerce API获取客户数据,均返回404错误,怀疑是邮箱中的+号导致:
第一种方式:
let currentUserEmail = "test+test@my-url.com" let apiURL = 'https://www.url.com/wc-api/v3/customers/email/' + currentUserEmail;
第二种方式:
let currentUserEmail = "test+test@my-url.com" let apiURL = 'https://www.url.com/wc-api/v3/customers/email/' + encodeURIComponent(currentUserEmail);
问题原因
- 直接拼接邮箱时,URL路径中的
+会被服务器解析为空格,导致匹配不到正确的客户邮箱。 - 使用
encodeURIComponent会将+转为%2B,但WooCommerce v3 API的customers/email/{email}端点对路径中编码后的特殊字符兼容不佳,无法正确识别。
正确解决方案
方案1:使用encodeURI转义邮箱
encodeURI仅转义URL中特殊的保留字符(比如+),但保留邮箱的@、.等必要字符,更适配API路径的解析逻辑:
let currentUserEmail = "test+test@my-url.com" let apiURL = 'https://www.url.com/wc-api/v3/customers/email/' + encodeURI(currentUserEmail);
方案2:改用查询参数传递邮箱
这是更稳妥的替代方案,WooCommerce API支持通过email查询参数筛选客户,编码后的参数能被服务器正确解析:
let currentUserEmail = "test+test@my-url.com" let apiURL = `https://www.url.com/wc-api/v3/customers?email=${encodeURIComponent(currentUserEmail)}`;
方案3:验证API端点兼容性
确认站点的WooCommerce版本是否支持customers/email/{email}路径端点,部分旧版本或自定义配置的站点可能仅支持查询参数方式。
内容的提问来源于stack exchange,提问作者Vueer
相关产品推荐
相关产品推荐

