低版本(0.27.2)Axios 如何使用

最后一次编辑于 2026-07-15

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;
反馈