fix(project): sTATUS_CODE

This commit is contained in:
zhangheng
2026-04-30 14:58:28 +08:00
parent de6b82d9be
commit c0281c0cc5
3 changed files with 46 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ interface OptionsProps {
method: string method: string
body?: BodyInit body?: BodyInit
data?: any data?: any
responseType?: "blob" | "arraybuffer" | "stream"
needCredentials?: boolean needCredentials?: boolean
isUpload?: boolean isUpload?: boolean
isDownload?: boolean isDownload?: boolean
@@ -52,11 +53,23 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
}, },
} }
const getResponseType = (requestOptions: OptionsProps) => {
return (
requestOptions.responseType ||
(requestOptions.headerAttr?.responseType as
| "blob"
| "arraybuffer"
| "stream"
| undefined)
)
}
const createSsrRequest: ( const createSsrRequest: (
options: OptionsProps, options: OptionsProps,
token?: string, token?: string,
refreshToken?: string refreshToken?: string
) => Request = (options) => { ) => Request = (options) => {
const responseType = getResponseType(options)
// 设置请求头 // 设置请求头
let myHeaders = new Headers() let myHeaders = new Headers()
if (!options.isUpload && !options.isFormData && !options.notJson) { if (!options.isUpload && !options.isFormData && !options.notJson) {
@@ -79,7 +92,13 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
cache: "default", cache: "default",
body: options.isFormData body: options.isFormData
? options.body ? options.body
: (JSON.stringify({ data: options.body, ...options }) as BodyInit), : (JSON.stringify({
data: options.body,
...options,
options: {
responseType,
},
}) as BodyInit),
} }
const pathList = options.url.split("/") const pathList = options.url.split("/")
const request = new Request( const request = new Request(
@@ -108,6 +127,7 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
} }
if (options.headerAttr) { if (options.headerAttr) {
Object.entries(options.headerAttr).map(([key, value]) => { Object.entries(options.headerAttr).map(([key, value]) => {
if (key === "responseType") return
myHeaders.append(key, value) myHeaders.append(key, value)
}) })
} }
@@ -151,9 +171,12 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
return new Promise((resolved, rejected) => { return new Promise((resolved, rejected) => {
fetch(request) fetch(request)
.then(async (response) => { .then(async (response) => {
const responseType = getResponseType(options)
if (response.status === 200) { if (response.status === 200) {
if (options.isDownload) { if (options.isDownload) {
return response.blob() return response.blob()
} else if (responseType === "stream") {
return response
} else { } else {
return response.headers return response.headers
.get("Content-Type") .get("Content-Type")
@@ -187,6 +210,8 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
}) })
const retry_request = createNewRequest(options, access_token) const retry_request = createNewRequest(options, access_token)
const retry_response = await fetch(retry_request) const retry_response = await fetch(retry_request)
const responseType = getResponseType(options)
if (responseType === "stream") return retry_response
return options.isDownload return options.isDownload
? retry_response.blob() ? retry_response.blob()
: retry_response.json() : retry_response.json()
@@ -257,6 +282,13 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
} }
}) })
.then(async (response) => { .then(async (response) => {
if (
getResponseType(options) === "stream" &&
response instanceof Response
) {
resolved(response as T)
return
}
const code = response?.code const code = response?.code
const errInfo = response?.message || "" const errInfo = response?.message || ""
if (response) { if (response) {
@@ -279,6 +311,16 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
: retry_response.json() : retry_response.json()
} catch (error) { } catch (error) {
rejected(error) rejected(error)
try {
await deleteCookie()
} catch (error) {
rejected(error)
} finally {
// 清空身份信息并跳转至登录页面
removeUserInfo()
logout()
window.location.href = "/login"
}
} }
} else if (status === 400) { } else if (status === 400) {
const { message: errInfo } = response const { message: errInfo } = response

View File

@@ -123,8 +123,8 @@ export async function POST(req: any) {
if (!sessionResult.ok) { if (!sessionResult.ok) {
return attachServerTiming( return attachServerTiming(
NextResponse.json( NextResponse.json(
{ message: sessionResult.message || "未获取到用户信息", code: 401 }, { message: sessionResult.message || "未获取到用户信息", code: 406 },
{ status: 401 } { status: 406 }
), ),
{ {
...timing, ...timing,

View File

@@ -39,6 +39,7 @@ export const STATUS_CODE = new Map([
[190, "Embedding生成中"], [190, "Embedding生成中"],
[191, "Embedding生成失败"], [191, "Embedding生成失败"],
[199, "审核失败"], [199, "审核失败"],
[200, "已准备"],
[201, "试标阶段"], // 试标中 [201, "试标阶段"], // 试标中
[202, "试标阶段"], // 试标完成 [202, "试标阶段"], // 试标完成
[203, "试标阶段"], // 试标确认 [203, "试标阶段"], // 试标确认