|
|
@@ -1,64 +1,10 @@
|
|
|
-import axios, { isAxiosError } from 'axios';
|
|
|
+
|
|
|
import { hc } from 'hono/client'
|
|
|
import type {
|
|
|
AuthRoutes, UserRoutes, RoleRoutes,
|
|
|
FileRoutes, MembershipPlanRoutes
|
|
|
} from '@/server/api';
|
|
|
-
|
|
|
-// 创建 axios 适配器
|
|
|
-const axiosFetch = async (url: RequestInfo | URL, init?: RequestInit) => {
|
|
|
- const requestHeaders:Record<string, string> = {};
|
|
|
-
|
|
|
- if(init?.headers instanceof Headers) {
|
|
|
- init.headers.forEach((value, key) => {
|
|
|
- requestHeaders[key] = value;
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- const response = await axios.request({
|
|
|
- url: url.toString(),
|
|
|
- method: init?.method || 'GET',
|
|
|
- headers: requestHeaders,
|
|
|
- data: init?.body,
|
|
|
- }).catch((error) => {
|
|
|
- console.log('axiosFetch error', error)
|
|
|
-
|
|
|
- if(isAxiosError(error)) {
|
|
|
- return {
|
|
|
- status: error.response?.status,
|
|
|
- statusText: error.response?.statusText,
|
|
|
- data: error.response?.data,
|
|
|
- headers: error.response?.headers
|
|
|
- }
|
|
|
- }
|
|
|
- throw error;
|
|
|
- })
|
|
|
-
|
|
|
- const responseHeaders = new Headers();
|
|
|
- if (response.headers) {
|
|
|
- for (const [key, value] of Object.entries(response.headers)) {
|
|
|
- responseHeaders.set(key, value);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 处理204 No Content响应,不设置body
|
|
|
- const body = response.status === 204
|
|
|
- ? null
|
|
|
- : responseHeaders.get('content-type')?.includes('application/json')
|
|
|
- ? JSON.stringify(response.data)
|
|
|
- : response.data;
|
|
|
-
|
|
|
- return new Response(
|
|
|
- body,
|
|
|
- {
|
|
|
- status: response.status,
|
|
|
- statusText: response.statusText,
|
|
|
- headers: responseHeaders
|
|
|
- }
|
|
|
- )
|
|
|
-}
|
|
|
-
|
|
|
+import { axiosFetch } from './utils/axios-fetch';
|
|
|
|
|
|
export const authClient = hc<AuthRoutes>('/', {
|
|
|
fetch: axiosFetch,
|