UNPKG

@szzbmy/lowcode-cli

Version:

🐇 lowcode-cli is an efficient cli tool for Rabbitpre plugin component secondary development. ❤️

110 lines (109 loc) 3.43 kB
"use strict"; /** * 请求函数封装 * @Author: fanyihuo * @Date: 2021-08-13 */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.get = exports.post = void 0; const node_fetch_1 = __importDefault(require("node-fetch")); const query_1 = require("./query"); const config_1 = __importDefault(require("../config")); const logger_1 = __importDefault(require("./logger")); /** * 统一请求调用函数 */ const request = (url, options) => { const { headers, customOptions = {}, ...finalOptions } = options; const { body, formData, blob, isExternalReq, buffer } = customOptions; const finalHeaders = { ...headers, 'rp-lowcode-cli-token': config_1.default.userInfo.token, }; let finalBody = body; if (options.method === 'POST' && !formData) { // @ts-ignore finalHeaders['Content-Type'] = 'application/json'; finalBody = JSON.stringify(body); } logger_1.default.debug('请求开始:', JSON.stringify({ url, options, })); return (0, node_fetch_1.default)(url, { ...finalOptions, headers: finalHeaders, body: finalBody, }).then(res => { // 返回 blob 格式 if (blob) { logger_1.default.debug('请求成功, 格式为 blob'); return res.blob(); } if (buffer) { logger_1.default.debug('请求成功, 返回 buffer'); return res.buffer(); } // 返回 json 格式并添加统一校验 return res .json() .then(result => { const resJson = result; if (isExternalReq) { return resJson; } // 请求成功直接返回 data if (+resJson.code === 200) { logger_1.default.debug('请求成功, 返回值为:', JSON.stringify(resJson)); return resJson.data; } // 授权问题直接退出 if (+resJson.code === 4003) { logger_1.default.error(`当前环境(${config_1.default.env})未登录, 请先登录`); process.exit(1); } logger_1.default.debug('请求出错, 返回值为:', JSON.stringify(resJson)); // 其余的问题抛出错误给业务处理 // 这里有可能会报后端的错误, 或者是 node 层的错误 throw new Error(resJson.msg || resJson.errormsg); }) .catch(error => { logger_1.default.debug('请求出错, 错误信息:', error); throw error; }); }); }; /** * post 请求封装 * @param url 请求链接 * @param body 请求数据 * @param opts 配置项 */ async function post(url, body, opts) { return request(url, { ...opts, method: 'POST', customOptions: { ...opts?.customOptions, body, }, }); } exports.post = post; /** * get 请求封装 * @param url 请求链接 * @param {QueryType} query 请求 query 参数 * @param opts 配置项 */ async function get(url, query = '', opts) { const _url = url + (0, query_1.stringifyQuery)(query); return request(_url, { ...opts, method: 'GET', }); } exports.get = get;