|
@@ -9,16 +9,16 @@ import type {
|
|
|
ElderlyUniversityRoutes,
|
|
ElderlyUniversityRoutes,
|
|
|
PolicyNewsRoutes,
|
|
PolicyNewsRoutes,
|
|
|
UserPreferenceRoutes
|
|
UserPreferenceRoutes
|
|
|
-} from '@/server/api'
|
|
|
|
|
|
|
+} from '@/server/api';
|
|
|
|
|
+import axios from 'axios';
|
|
|
|
|
|
|
|
// 创建axios fetch适配器
|
|
// 创建axios fetch适配器
|
|
|
const axiosFetch = async (input: RequestInfo | URL, init?: RequestInit) => {
|
|
const axiosFetch = async (input: RequestInfo | URL, init?: RequestInit) => {
|
|
|
- const axios = (await import('axios')).default
|
|
|
|
|
|
|
|
|
|
- const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url
|
|
|
|
|
- const method = init?.method || 'GET'
|
|
|
|
|
- const headers = init?.headers ? Object.fromEntries(new Map(init.headers as any)) : {}
|
|
|
|
|
- const data = init?.body
|
|
|
|
|
|
|
+ const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
|
|
|
|
|
+ const method = init?.method || 'GET';
|
|
|
|
|
+ const headers = init?.headers ? Object.fromEntries(new Map(init.headers as any)) : {};
|
|
|
|
|
+ const data = init?.body;
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
const response = await axios({
|
|
const response = await axios({
|
|
@@ -28,55 +28,62 @@ const axiosFetch = async (input: RequestInfo | URL, init?: RequestInit) => {
|
|
|
data,
|
|
data,
|
|
|
responseType: 'json',
|
|
responseType: 'json',
|
|
|
validateStatus: () => true,
|
|
validateStatus: () => true,
|
|
|
- })
|
|
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
return new Response(JSON.stringify(response.data), {
|
|
return new Response(JSON.stringify(response.data), {
|
|
|
status: response.status,
|
|
status: response.status,
|
|
|
statusText: response.statusText,
|
|
statusText: response.statusText,
|
|
|
headers: response.headers as any,
|
|
headers: response.headers as any,
|
|
|
- })
|
|
|
|
|
|
|
+ });
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- throw error
|
|
|
|
|
|
|
+ throw error;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
-// 基础客户端配置
|
|
|
|
|
-const baseClient = hc<{
|
|
|
|
|
- api: {
|
|
|
|
|
- v1: {
|
|
|
|
|
- auth: AuthRoutes
|
|
|
|
|
- users: UserRoutes
|
|
|
|
|
- roles: RoleRoutes
|
|
|
|
|
- files: FileRoutes
|
|
|
|
|
- 'silver-jobs': SilverJobsRoutes
|
|
|
|
|
- 'silver-users': SilverUsersRoutes
|
|
|
|
|
- 'elderly-universities': ElderlyUniversityRoutes
|
|
|
|
|
- 'policy-news': PolicyNewsRoutes
|
|
|
|
|
- 'user-preferences': UserPreferenceRoutes
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}>('/api', {
|
|
|
|
|
|
|
+// 客户端实例 - 严格按照RPC规范命名
|
|
|
|
|
+export const authClient = hc<AuthRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1.auth;
|
|
|
|
|
+
|
|
|
|
|
+export const userClient = hc<UserRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1.users;
|
|
|
|
|
+
|
|
|
|
|
+export const roleClient = hc<RoleRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1.roles;
|
|
|
|
|
+
|
|
|
|
|
+export const fileClient = hc<FileRoutes>('/', {
|
|
|
fetch: axiosFetch,
|
|
fetch: axiosFetch,
|
|
|
-})
|
|
|
|
|
|
|
+}).api.v1.files;
|
|
|
|
|
|
|
|
-// 统一API客户端导出
|
|
|
|
|
-export const apiClient = baseClient.api.v1
|
|
|
|
|
|
|
+// 银龄岗API客户端(银龄岗资源集合)
|
|
|
|
|
+const silverJobsClient = hc<SilverJobsRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1['silver-jobs'];
|
|
|
|
|
|
|
|
-// 向后兼容的命名导出
|
|
|
|
|
-export const authClient = apiClient.auth
|
|
|
|
|
-export const userClient = apiClient.users
|
|
|
|
|
-export const roleClient = apiClient.roles
|
|
|
|
|
-export const fileClient = apiClient.files
|
|
|
|
|
-export const silverJobsClient = apiClient['silver-jobs']
|
|
|
|
|
-export const silverUsersClient = apiClient['silver-users']
|
|
|
|
|
-export const elderlyUniversityClient = apiClient['elderly-universities']
|
|
|
|
|
-export const policyNewsClient = apiClient['policy-news']
|
|
|
|
|
-export const userPreferenceClient = apiClient['user-preferences']
|
|
|
|
|
|
|
+// 银龄岗具体资源客户端
|
|
|
|
|
+export const companyClient = silverJobsClient.companies;
|
|
|
|
|
+export const jobClient = silverJobsClient.jobs;
|
|
|
|
|
+export const applicationClient = silverJobsClient.applications;
|
|
|
|
|
+export const favoriteClient = silverJobsClient.favorites;
|
|
|
|
|
+export const viewClient = silverJobsClient.views;
|
|
|
|
|
+export const companyImageClient = silverJobsClient['company-images'];
|
|
|
|
|
|
|
|
-// 银龄岗子模块客户端
|
|
|
|
|
-export const companyClient = silverJobsClient.companies
|
|
|
|
|
-export const jobClient = silverJobsClient.jobs
|
|
|
|
|
-export const applicationClient = silverJobsClient.applications
|
|
|
|
|
-export const favoriteClient = silverJobsClient.favorites
|
|
|
|
|
-export const viewClient = silverJobsClient.views
|
|
|
|
|
-export const companyImageClient = silverJobsClient['company-images']
|
|
|
|
|
|
|
+// 银龄用户资源客户端
|
|
|
|
|
+const silverUsersClient = hc<SilverUsersRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1['silver-users'];
|
|
|
|
|
+
|
|
|
|
|
+// 其他资源客户端
|
|
|
|
|
+export const elderlyUniversityClient = hc<ElderlyUniversityRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1['elderly-universities'];
|
|
|
|
|
+
|
|
|
|
|
+export const policyNewsClient = hc<PolicyNewsRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1['policy-news'];
|
|
|
|
|
+
|
|
|
|
|
+export const userPreferenceClient = hc<UserPreferenceRoutes>('/', {
|
|
|
|
|
+ fetch: axiosFetch,
|
|
|
|
|
+}).api.v1['user-preferences'];
|