Files
api-codegen/example.ts
S.Gromov bf340b3dbe feat: добавить split-режим генерации REST-клиента
- добавлен режим генерации single, split и both
- добавлены отдельные operation-файлы и createApiClient
- удалена генерация SWR-хуков и зависимости React/SWR
- обновлены CLI, шаблоны, примеры, документация и тесты
- версия пакета повышена до 3.0.0
2026-06-30 07:59:52 +03:00

73 lines
1.6 KiB
TypeScript

/**
* Пример использования сгенерированного tree-shaking friendly REST-клиента.
*/
// @ts-nocheck
import { createApiClient, HttpClient } from './output';
import { getProfile } from './output/operations/get-profile';
import { login } from './output/operations/login';
import { register } from './output/operations/register';
type SecurityData = {
token: string;
};
const httpClient = new HttpClient<SecurityData>({
baseUrl: 'https://api.example.com',
baseApiParams: {
headers: {
'Content-Type': 'application/json',
},
},
securityWorker: (securityData) => {
if (!securityData?.token) {
return undefined;
}
return {
headers: {
Authorization: `Bearer ${securityData.token}`,
},
};
},
});
const api = createApiClient(httpClient, {
auth: {
register,
login,
getProfile,
},
});
async function registerUser() {
const result = await api.auth.register({
email: 'user@example.com',
password: 'SecurePassword123',
firstName: 'Иван',
lastName: 'Иванов',
});
console.log('Пользователь зарегистрирован:', result);
return result;
}
async function loginUser() {
const result = await api.auth.login({
email: 'user@example.com',
password: 'SecurePassword123',
});
httpClient.setSecurityData({ token: result.access_token });
return result;
}
async function getUserProfile() {
const profile = await api.auth.getProfile();
console.log('Профиль пользователя:', profile);
return profile;
}
export { getUserProfile, loginUser, registerUser };