miniprogram-request
Version:
A better Request package for MiniProgram API
43 lines (39 loc) • 1.5 kB
text/typescript
// import { RequestData, RequestOptions } from './configuration';
import { buildParams, getCommonOptions, Omit } from 'miniprogram-network-utils';
import { FullRequestOption, HttpResponse, wx } from './http';
/**
* 微信请求参数 (不包含回调函数)
*/
export type RequestParams = Omit<wx.RequestOption, 'success' | 'fail' | 'complete'>;
/**
* 构建请求参数
* @param data - 完整配置参数
*/
export function transformRequestSendDefault<
T extends {} = {},
// TwxParams extends RequestParams = RequestParams
>(data: FullRequestOption<T>): RequestParams {
const wxParam: RequestParams = {
url: buildParams(data.url, data.params, data.baseURL),
header: data.headers
};
if (data.responseType === 'arraybuffer') {
wxParam.responseType = 'arraybuffer';
} else if (data.responseType === 'json') {
wxParam.dataType = 'json';
}
return getCommonOptions(wxParam, data, ['data', 'method', 'enableCache', 'enableChunked', 'enableHttp2', 'enableHttpDNS', 'enableQuic', 'httpDNSServiceId']);
}
/**
* 返回请求成功的响应数据data部分
* statusCode 2xx 操作成功仅返回data数据
* 否则抛出错误(rejected)
* @param res - 返回结果
* @param config - 完整配置参数
*/
export function transformRequestResponseOkData<T = any>(res: HttpResponse, config: FullRequestOption): T {
if (res.statusCode >= 200 && res.statusCode < 300) {
return res.data as any as T;
}
throw res;
}