@antdp/hooks
Version:
@/antdp-hooks
75 lines (72 loc) • 2.81 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchFn = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _excluded = ["contentType"];
// @ts-ignore
function getFetchOption() {
var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'json';
var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (type === 'json') {
option.headers = (0, _objectSpread2["default"])({
Accept: 'application/json',
'Content-Type': 'application/json'
}, option.headers);
} else if (type === 'form') {
option.headers = (0, _objectSpread2["default"])({
Accept: 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
}, option.headers);
}
option.headers = new Headers((0, _objectSpread2["default"])({}, option.headers || {}));
var store = ANTD_IS_STORAGE ? sessionStorage : localStorage;
var token = store.getItem("token");
if (token && !option.headers.get('Authorization')) {
option.headers.set('Authorization', "Bearer ".concat(token));
}
return (0, _objectSpread2["default"])({}, option);
}
/**
* Fetch API 请求
* ## 返回状态
*
* 200: '服务器成功返回请求的数据'
* 201: '新建或修改数据成功'
* 400: '发出的请求错误'
* 401: '用户没有权限'
* 403: '用户访问被禁止'
* 404: '请求不存在,服务器没有进行操作'
* 406: '请求的格式错误'
* 410: '资源被永久删除'
* 422: '验证错误'
* 500: '服务器发生错误,请检查服务器'
* 502: '网关错误'
* 503: '服务不可用,服务器暂时过载或维护'
* 504: '网关超时'
* @param url string 请求 API
*/
var fetchFn = exports.fetchFn = function fetchFn(url) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$contentType = _ref.contentType,
contentType = _ref$contentType === void 0 ? 'json' : _ref$contentType,
fetchOption = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
return fetch(url, getFetchOption(contentType, fetchOption)).then(function (res) {
if (!/(200|201)/.test(String(res.status))) {
throw new Response('', {
status: res.status,
headers: res.headers,
statusText: "".concat(res.statusText, " - ").concat(res.url || '')
});
}
return res.json();
})["catch"](function (err) {
throw new Response('', {
status: 500,
statusText: "".concat(err.message, " - ").concat(url || '')
});
});
};