UNPKG

miniprogram-request

Version:
126 lines 5.43 kB
import { LifeCycle } from 'miniprogram-network-life-cycle'; import { transformRequestSendDefault } from './transform'; /** * 小程序HTTP 请求生命周期封装 * @example * `const http = new Http({ baseURL: 'https://api.newfuture.cc/', retry: 3 });` * @template TExt 扩展参数属性类型 */ export class Http extends LifeCycle { /** * 新建 Http实列 * @param config 全局默认配置 * @param request 请求处理方法,默认使用请求队列处理 * @param listeners 请求事件监听 */ constructor(config, request, listeners) { super( // tslint:disable-next-line: no-use-before-declare request || wx.request, // tslint:disable-next-line: no-object-literal-type-assertion config || { transformSend: transformRequestSendDefault }, listeners); } request() { const argNum = arguments.length; // tslint:disable-next-line: no-unsafe-any const options = argNum === 1 ? arguments[0] : (arguments[3] || {}); if (argNum > 1) { options.method = arguments[0]; options.url = arguments[1]; if (argNum > 2) { // tslint:disable-next-line: no-unsafe-any options.data = arguments[2]; } } return this.process(options); } /** * GET 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData get query data请求参数的格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ // tslint:disable-next-line: no-reserved-keywords get(action, data, config) { return this.request('GET', action, data, config); } /** * POST 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData post data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ post(action, data, config) { return this.request('POST', action, data, config); } /** * PUT 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData post data数据格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ put(action, data, config) { return this.request('PUT', action, data, config); } /** * DELETE 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData put query data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ // tslint:disable-next-line: no-reserved-keywords delete(action, data, config) { return this.request('DELETE', action, data, config); } /** * HEAD 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData head query data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ head(action, data, config) { return this.request('HEAD', action, data, config); } /** * Patch 操作 * 由于小程序不支持PATCH 方法 * 采用X-HTTP-Method-Override兼容处理,需要服务器端支持 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData patch data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ patch(action, data, config) { if (!config) { // tslint:disable-next-line: no-parameter-reassignment config = { headers: { 'X-HTTP-Method-Override': 'PATCH' } }; } else if (!config.headers) { config.headers = { 'X-HTTP-Method-Override': 'PATCH' }; } else { config.headers['X-HTTP-Method-Override'] = 'PATCH'; } return this.request('POST', action, data, config); } } //# sourceMappingURL=http.js.map