axios-curlirize未在控制台打印代理配置的curl请求问题
解决axios-curlirize不输出代理配置的问题
axios-curlirize默认不会把axios请求中的代理配置转换成curl命令的代理参数,得手动扩展它的回调逻辑补上这部分内容。
具体实现方法
通过自定义curlirize的onSuccess和onError回调,在生成curl命令后,检查请求配置里的proxy字段,手动添加curl的代理参数:
import axios from 'axios'; import curlirize from 'axios-curlirize'; // 初始化curlirize并自定义回调 curlirize(axios, { onSuccess: (result) => { let curlCmd = result.curl; const { proxy } = result.config; if (proxy) { // 拼接代理地址,带认证的话加上用户名密码 let proxyAddr = `${proxy.host}:${proxy.port}`; if (proxy.auth) { proxyAddr = `${proxy.auth.username}:${proxy.auth.password}@${proxyAddr}`; } // 将代理参数插入到curl命令中 curlCmd = curlCmd.replace('curl -X', `curl -x http://${proxyAddr} -X`); } console.log(curlCmd); }, onError: (err) => { let curlCmd = err.curl; const { proxy } = err.config; if (proxy) { let proxyAddr = `${proxy.host}:${proxy.port}`; if (proxy.auth) { proxyAddr = `${proxy.auth.username}:${proxy.auth.password}@${proxyAddr}`; } curlCmd = curlCmd.replace('curl -X', `curl -x http://${proxyAddr} -X`); } console.error(curlCmd); } });
说明
- 上述代码会自动识别axios请求配置中的
proxy对象,把它转换成curl的-x(等价于--proxy)参数 - 如果代理需要认证,会自动拼接
用户名:密码@代理地址:端口的格式 - 注意axios的proxy配置格式要符合以下结构:
{ proxy: { host: '你的代理地址', port: 代理端口, auth: { username: '代理用户名', password: '代理密码' } } }
内容的提问来源于stack exchange,提问作者syed kumail abbas
相关产品推荐
相关产品推荐

