MCPcopy Create free account
hub / github.com/msgbyte/tailchat / createRequest

Function createRequest

client/shared/api/request.ts:24–88  ·  view source on GitHub ↗

* 创建请求实例

()

Source from the content-addressed store, hash-verified

22 * 创建请求实例
23 */
24function createRequest() {
25 const ins = axios.create({
26 baseURL: getServiceUrl(),
27 });
28 onServiceUrlChange((getUrl) => {
29 // 重置请求地址
30 ins.defaults.baseURL = getUrl();
31 });
32
33 ins.interceptors.request.use(async (val) => {
34 if (
35 ['post', 'get'].includes(String(val.method).toLowerCase()) &&
36 !val.headers['X-Token']
37 ) {
38 // 任何请求都尝试增加token
39 val.headers['X-Token'] = await tokenGetter();
40 }
41
42 return val;
43 });
44
45 ins.interceptors.response.use(
46 (val) => {
47 /**
48 * 预处理返回的数据
49 */
50 val.data = _get(val.data, 'data', val.data);
51
52 return val;
53 },
54 (err) => {
55 // 尝试获取错误信息
56 const responseData = _get(err, 'response.data') ?? {};
57 let errorMsg: string = responseData.message;
58 const code: number = responseData.code;
59
60 if (responseData.type === 'VALIDATION_ERROR') {
61 // 校验失败
62 errorMsg = t('请求参数校验失败');
63
64 if (Array.isArray(responseData.data)) {
65 console.error(JSON.stringify(responseData.data));
66
67 try {
68 errorMsg += `: ${responseData.data
69 .map((item: any) => item.field)
70 .join(', ')}`;
71 } catch (e) {}
72 }
73 }
74
75 // comment it logic because if not throw error, react query will cache `{ data: { result: false, msg: errorMsg, code } }` and has some problem
76 if (_isFunction(getErrorHook)) {
77 const isContinue = getErrorHook(err);
78 // if (isContinue === false) {
79 // return { data: { result: false, msg: errorMsg, code } };
80 // }
81 }

Callers 1

request.tsFile · 0.70

Calls 4

tFunction · 0.90
errorMethod · 0.80
joinMethod · 0.80
createMethod · 0.45

Tested by

no test coverage detected