mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 21:13:50 +00:00

* perf: redirect request and err log replace perf: dataset openapi feat: session fix: retry input error feat: 468 doc sub page feat: standard sub perf: rerank tip perf: rerank tip perf: api sdk perf: openapi sub plan perf: sub ui fix: ts * perf: init log * fix: variable select * sub page * icon * perf: llm model config * perf: menu ux * perf: system store * perf: publish app name * fix: init data * perf: flow edit ux * fix: value type format and ux * fix prompt editor default value (#13) * fix prompt editor default value * fix prompt editor update when not focus * add key with variable --------- Co-authored-by: Archer <545436317@qq.com> * fix: value type * doc * i18n * import path * home page * perf: mongo session running * fix: ts * perf: use toast * perf: flow edit * perf: sse response * slider ui * fetch error * fix prompt editor rerender when not focus by key defaultvalue (#14) * perf: prompt editor * feat: dataset search concat * perf: doc * fix:ts * perf: doc * fix json editor onblur value (#15) * faq * vector model default config * ipv6 --------- Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
115 lines
2.9 KiB
TypeScript
115 lines
2.9 KiB
TypeScript
import { SERVICE_LOCAL_HOST } from '@fastgpt/service/common/system/tools';
|
|
import axios, { Method, InternalAxiosRequestConfig, AxiosResponse } from 'axios';
|
|
|
|
interface ConfigType {
|
|
headers?: { [key: string]: string };
|
|
hold?: boolean;
|
|
timeout?: number;
|
|
}
|
|
interface ResponseDataType {
|
|
code: number;
|
|
message: string;
|
|
data: any;
|
|
}
|
|
|
|
/**
|
|
* 请求开始
|
|
*/
|
|
function requestStart(config: InternalAxiosRequestConfig): InternalAxiosRequestConfig {
|
|
return config;
|
|
}
|
|
|
|
/**
|
|
* 请求成功,检查请求头
|
|
*/
|
|
function responseSuccess(response: AxiosResponse<ResponseDataType>) {
|
|
return response;
|
|
}
|
|
/**
|
|
* 响应数据检查
|
|
*/
|
|
function checkRes(data: ResponseDataType) {
|
|
if (data === undefined) {
|
|
console.log('error->', data, 'data is empty');
|
|
return Promise.reject('服务器异常');
|
|
} else if (data?.code && (data.code < 200 || data.code >= 400)) {
|
|
return Promise.reject(data);
|
|
}
|
|
return data.data;
|
|
}
|
|
|
|
/**
|
|
* 响应错误
|
|
*/
|
|
function responseError(err: any) {
|
|
if (!err) {
|
|
return Promise.reject({ message: '未知错误' });
|
|
}
|
|
if (typeof err === 'string') {
|
|
return Promise.reject({ message: err });
|
|
}
|
|
|
|
if (err?.response?.data) {
|
|
return Promise.reject(err?.response?.data);
|
|
}
|
|
return Promise.reject(err);
|
|
}
|
|
|
|
/* 创建请求实例 */
|
|
const instance = axios.create({
|
|
timeout: 60000, // 超时时间
|
|
headers: {
|
|
'content-type': 'application/json',
|
|
'Cache-Control': 'no-cache'
|
|
}
|
|
});
|
|
|
|
/* 请求拦截 */
|
|
instance.interceptors.request.use(requestStart, (err) => Promise.reject(err));
|
|
/* 响应拦截 */
|
|
instance.interceptors.response.use(responseSuccess, (err) => Promise.reject(err));
|
|
|
|
export function request(url: string, data: any, config: ConfigType, method: Method): any {
|
|
/* 去空 */
|
|
for (const key in data) {
|
|
if (data[key] === null || data[key] === undefined) {
|
|
delete data[key];
|
|
}
|
|
}
|
|
|
|
return instance
|
|
.request({
|
|
baseURL: `http://${SERVICE_LOCAL_HOST}`,
|
|
url,
|
|
method,
|
|
data: ['POST', 'PUT'].includes(method) ? data : null,
|
|
params: !['POST', 'PUT'].includes(method) ? data : null,
|
|
...config // custom config
|
|
})
|
|
.then((res) => checkRes(res.data))
|
|
.catch((err) => responseError(err));
|
|
}
|
|
|
|
/**
|
|
* api请求方式
|
|
* @param {String} url
|
|
* @param {Any} params
|
|
* @param {Object} config
|
|
* @returns
|
|
*/
|
|
export function GET<T = undefined>(url: string, params = {}, config: ConfigType = {}): Promise<T> {
|
|
return request(url, params, config, 'GET');
|
|
}
|
|
|
|
export function POST<T = undefined>(url: string, data = {}, config: ConfigType = {}): Promise<T> {
|
|
return request(url, data, config, 'POST');
|
|
}
|
|
|
|
export function PUT<T = undefined>(url: string, data = {}, config: ConfigType = {}): Promise<T> {
|
|
return request(url, data, config, 'PUT');
|
|
}
|
|
|
|
export function DELETE<T = undefined>(url: string, data = {}, config: ConfigType = {}): Promise<T> {
|
|
return request(url, data, config, 'DELETE');
|
|
}
|