UNPKG

@discuzq/sdk

Version:

discuz dsk

113 lines (93 loc) 3.65 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.transfromRequest = exports.transformResponse = exports.getRequestUrl = exports.getRequestMethod = exports.getRequestData = void 0; var _buildFullPath = _interopRequireDefault(require("axios/lib/core/buildFullPath")); var _buildURL = _interopRequireDefault(require("axios/lib/helpers/buildURL")); var _const = require("../const"); var _type = require("../../utils/type"); /** * 获取请求的链接:使用 axios 提供的方法拼接请求 URL * @param {string} baseURL 基础 url * @param {*} url 请求的 url 链接 * @param {*} params 请求的参数 * @param {*} paramsSerializer 用于序列化参数的方法 * @returns {string} */ // eslint-disable-next-line arrow-body-style var getRequestUrl = function getRequestUrl(baseURL, url, params, paramsSerializer) { return (0, _buildURL.default)((0, _buildFullPath.default)(baseURL, url), params, paramsSerializer); }; /** * 获取请求的方法 * @param {string} method 请求的方法 * @returns {string} */ exports.getRequestUrl = getRequestUrl; var getRequestMethod = function getRequestMethod(method) { return ((0, _type.isString)(method) ? method : _const.METHODS.GET).toUpperCase(); }; /** * 获取请求的数据 * @param {string} method 请求的方法 * @param {object|string} data 请求的数据 * @returns {object|string} */ exports.getRequestMethod = getRequestMethod; var getRequestData = function getRequestData(method, data) { if (method === _const.METHODS.POST || method === _const.METHODS.PUT || method === _const.METHODS.PATCH) return data; return ''; }; /** * 处理taro或uniapp返回的响应数据,抹平和axios的差异 * @param {object} miniResponse taro | uniapp 的响应内容 * @param {object} config axios 处理过的请求配置对象 * @param {object} miniRequest taro | uniapp 的调用发起请求时传递的请求配置 * @returns {object} 响应内容 */ exports.getRequestData = getRequestData; var transformResponse = function transformResponse(miniResponse, config, miniRequest) { var headers = miniResponse.header; var status = miniResponse.statusCode; var statusText = _const.STATUS_TEXT_MAP[status] || ''; var response = { data: miniResponse.data, status: status, statusText: statusText, headers: headers, config: config, request: miniRequest }; return response; }; /** * 处理taro和uniapp请求的参数,统一和axios对齐 * @param {object} config axios 处理过的请求配置对象 * @returns {object} 请求配置 */ exports.transformResponse = transformResponse; var transfromRequest = function transfromRequest(config) { var baseURL = config.baseURL, url = config.url, params = config.params, paramsSerializer = config.paramsSerializer, method = config.method, data = config.data; var requestUrl = getRequestUrl(baseURL, url, params, paramsSerializer); var requestMethod = getRequestMethod(method); var requestData = getRequestData(requestMethod, data); var requestConfig = { url: requestUrl, method: requestMethod, header: config.headers, data: requestData, // 响应的数据类型:"text" | "arraybuffer" responseType: config.responseType === 'arraybuffer' ? 'arraybuffer' : 'text', // 返回数据格式:"json" | "其他" dataType: config.responseType === 'json' ? 'json' : config.responseType }; return requestConfig; }; exports.transfromRequest = transfromRequest;