添加 agentation 成功
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* API 封装:baseURL、Token、POST JSON、统一错误与 401 处理
|
||||
* 依据:backend/API.md,全部 POST,JSON,Bearer Token
|
||||
*/
|
||||
(function (global) {
|
||||
'use strict';
|
||||
|
||||
var BASE_URL = 'http://127.0.0.1:8000';
|
||||
var TOKEN_KEY = 'pm_token';
|
||||
var USER_KEY = 'pm_user';
|
||||
|
||||
function getToken() {
|
||||
try {
|
||||
return localStorage.getItem(TOKEN_KEY) || '';
|
||||
} catch (e) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function setToken(token) {
|
||||
try {
|
||||
if (token) localStorage.setItem(TOKEN_KEY, token);
|
||||
else localStorage.removeItem(TOKEN_KEY);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function getUser() {
|
||||
try {
|
||||
var raw = localStorage.getItem(USER_KEY);
|
||||
return raw ? JSON.parse(raw) : null;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function setUser(user) {
|
||||
try {
|
||||
if (user) localStorage.setItem(USER_KEY, JSON.stringify(user));
|
||||
else localStorage.removeItem(USER_KEY);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function clearAuth() {
|
||||
setToken('');
|
||||
setUser(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/xxx 请求
|
||||
* @param {string} path - 如 '/api/auth/login'
|
||||
* @param {object} body - 请求体
|
||||
* @param {boolean} [requireAuth=true] - 是否携带 Token
|
||||
* @returns {Promise<{ ok: boolean, data?: object, status?: number, message?: string }>}
|
||||
*/
|
||||
function post(path, body, requireAuth) {
|
||||
if (requireAuth === undefined) requireAuth = true;
|
||||
var url = BASE_URL + path;
|
||||
var headers = {
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
var token = getToken();
|
||||
if (requireAuth && token) {
|
||||
headers['Authorization'] = 'Bearer ' + token;
|
||||
}
|
||||
return fetch(url, {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
body: JSON.stringify(body || {}),
|
||||
})
|
||||
.then(function (res) {
|
||||
return res.text().then(function (text) {
|
||||
var data = null;
|
||||
try {
|
||||
data = text ? JSON.parse(text) : null;
|
||||
} catch (e) {
|
||||
data = null;
|
||||
}
|
||||
if (res.status === 401) {
|
||||
clearAuth();
|
||||
if (typeof global.onAuthRequired === 'function') {
|
||||
global.onAuthRequired();
|
||||
}
|
||||
return { ok: false, status: 401, message: data && data.message ? data.message : '未登录' };
|
||||
}
|
||||
if (!res.ok) {
|
||||
var msg = (data && data.message) || res.statusText || '请求失败';
|
||||
return { ok: false, status: res.status, data: data, message: msg };
|
||||
}
|
||||
return { ok: true, data: data };
|
||||
});
|
||||
})
|
||||
.catch(function (err) {
|
||||
return { ok: false, message: err && err.message ? err.message : '网络错误' };
|
||||
});
|
||||
}
|
||||
|
||||
global.API = {
|
||||
BASE_URL: BASE_URL,
|
||||
getToken: getToken,
|
||||
setToken: setToken,
|
||||
getUser: getUser,
|
||||
setUser: setUser,
|
||||
clearAuth: clearAuth,
|
||||
post: post,
|
||||
};
|
||||
})(typeof window !== 'undefined' ? window : this);
|
||||
Reference in New Issue
Block a user