import xhrAdapter from 'axios/lib/adapters/xhr';
import settle from 'axios/lib/core/settle';
import buildFullPath from 'axios/lib/core/buildFullPath';
import buildURL from 'axios/lib/helpers/buildURL';
const GATEWAY_DOMAIN = 'a2691ef24-wxc0dc4e681cfac36f.sh.wxcloudrun.com';
const c1 = new window.cloud.Cloud({
identityless: true,
resourceAppid: 'wx069a87eae381af2b', // appid,填入接入的小程序 appid
config: {
customDomain: `https://${GATEWAY_DOMAIN}`, // 网关接入节点域名
},
});
c1.init(); // 初始化实例
const gateway = c1.services.Gateway({
domain: GATEWAY_DOMAIN,
}); // 网关接入节点域名,不包含协议头
const wxadapter = (config) =>
new Promise((resolve, reject) => {
var fullPath = buildFullPath(config.baseURL, config.url);
var url = buildURL(fullPath, config.params, config.paramsSerializer);
gateway
.call({
...config,
url,
header: {
'X-WX-HTTP-MODE': 'REROUTE',
...config.headers,
},
})
.then((result) => {
const headers = result.header;
const response = {
config,
data: result.data,
headers,
status: result.statusCode,
statusText: result.errMsg ?? 'OK',
cookies: result.cookies,
};
settle(resolve, reject, response);
})
.catch(
// 降级为普通 xhr 请求
(error) => {
console.log(
error,
'error when using wx gateway, using fetch adapter to fallback'
);
return xhrAdapter(config).then((result) => {
const response = result;
settle(resolve, reject, response);
});
}
);
});
export default wxadapter;
低版本(0.27.2)Axios 如何使用
最后一次编辑于 2026-07-15