@discuzq/sdk
Version:
discuz dsk
113 lines (93 loc) • 3.65 kB
JavaScript
;
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;