UNPKG

@jxstjh/jhvideo

Version:

HTML5 jhvideo base on MPEG2-TS Stream Player

142 lines 5.8 kB
/** *@description: 网络类的封装 *@author: jsyang *@date: 2021-06-03 13:56:31 */ export default { //GET请求 get: function (url, data, headers) { if (data === void 0) { data = null; } if (headers === void 0) { headers = null; } // return this.ajax('GET', url, null); return this.fetch('GET', url, data, headers); }, //POST请求 post: function (url, data, headers) { if (data === void 0) { data = null; } if (headers === void 0) { headers = null; } return this.fetch('POST', url, data, headers); }, //PUT请求 put: function (url, data, headers) { if (data === void 0) { data = null; } if (headers === void 0) { headers = null; } // return this.ajax('PUT', url, data); return this.fetch('PUT', url, data, headers); }, //Delete请求 del: function (url, data, headers) { if (data === void 0) { data = null; } if (headers === void 0) { headers = null; } // return this.ajax('DELETE', url, data); return this.fetch('DELETE', url, data, headers); }, ajax: function (method, url, data, headers) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest, params = []; xhr.responseType = 'json'; // 指定返回类型 xhr.onload = function () { switch (xhr.status) { case 200: resolve(xhr.response); break; case 204: resolve(); break; case 401: // 401登录失败处理 //do something reject(); break; default: reject({ status: xhr.status, res: xhr.response }); } }; xhr.open(method, url, true); if (!headers) { xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); // 设置content-type } else { Object.entries(headers).forEach(function (_a) { var k = _a[0], v = _a[1]; xhr.setRequestHeader(k, v); // 设置content-type }); } var ct = headers['Content-Type'] || headers['content-type'] || headers['Content-type']; if (ct.indexOf('x-www-form-urlencoded') >= 0) { var str_1 = ''; Object.keys(data).forEach(function (k, index) { str_1 += (index === 0 ? "".concat(k, "=").concat(data[k]) : "&".concat(k, "=").concat(data[k])); }); data = str_1; } else if (data.constructor === FormData) { xhr.setRequestHeader('Content-Type', 'multipart/form-data;'); data = data; } else { if (data) { // 将参数编码成表单的键值对形式 // for (let k in data) params.push(`${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`); // data = params.join('&'); data = JSON.stringify(data); } } // xhr.withCredentials = true;// 支持跨域发送cookies xhr.send(data); }); }, fetch: function (method, url, data, headers) { if (window && !window.fetch) { return this.ajax(method, url, data, headers); } var params = [], init = { method: method, mode: 'cors', headers: { 'Content-Type': 'text/plain;charset=UTF-8' }, // credentials: 'include',// 支持跨域发送cookies }; if (headers) { Object.entries(headers).forEach(function (_a) { var k = _a[0], v = _a[1]; init.headers[k] = v; }); } var ct = init.headers['Content-Type'] || init.headers['content-type'] || init.headers['Content-type']; if (data) { // 处理消息体 if (method === 'GET') { for (var k in data) params.push("".concat(encodeURIComponent(k), "=").concat(encodeURIComponent(data[k]), " ")); url += '?' + params.join('&'); } else { if (ct.indexOf('x-www-form-urlencoded') >= 0) { var str_2 = ''; Object.keys(data).forEach(function (k, index) { str_2 += (index === 0 ? "".concat(k, "=").concat(data[k]) : "&".concat(k, "=").concat(data[k])); }); init.body = str_2; } else if (data.constructor === FormData) { init.headers['Content-Type'] = 'multipart/form-data;'; init.body = data; } else if (ct.indexOf('application/json') >= 0) { init.body = JSON.stringify(data); } else { init.body = JSON.stringify(data); } } } return fetch(url, init).then(function (e) { switch (e.status) { case 200: return e.json(); case 204: break; case 401: // 401登录失败统一处理 //do something return Promise.reject(); case 403: return e.json().then(function (e) { return Promise.reject(e); }); // 服务端主动抛出错误 default: return Promise.reject({ status_code: 500, message: '服务器繁忙, 请稍后再试' }); } }); } }; //# sourceMappingURL=httpClient.js.map