feat: инициализация API CodeGen

CLI утилита для генерации TypeScript API клиента из OpenAPI спецификации.
- Поддержка локальных файлов и URL для спецификаций
- Кастомизация имени выходного файла через флаг --name
- Генерация типизированного клиента с SWR хуками
- Минимальный вывод логов для лучшего UX
This commit is contained in:
2025-10-26 22:30:58 +03:00
commit 15ed8c8b8d
26 changed files with 1854 additions and 0 deletions

136
example.ts Normal file
View File

@@ -0,0 +1,136 @@
/**
* Пример использования сгенерированного API клиента
*/
import { Api, HttpClient } from './output/Api';
// 1. Создание HTTP клиента с базовыми настройками
const httpClient = new HttpClient({
baseUrl: 'https://cdn.example.com', // Базовый URL (уже установлен при генерации)
baseApiParams: {
headers: {
'Content-Type': 'application/json',
},
},
});
// 2. Создание API клиента
const api = new Api(httpClient);
// 3. Пример использования
async function registerUser() {
try {
const result = await api.auth.register({
email: 'user@example.com',
password: 'SecurePassword123',
firstName: 'Иван',
lastName: 'Иванов',
});
console.log('Пользователь зарегистрирован:', result);
return result;
} catch (error) {
console.error('Ошибка регистрации:', error);
throw error;
}
}
async function loginUser() {
try {
const result = await api.auth.login({
email: 'user@example.com',
password: 'SecurePassword123',
});
console.log('Авторизация успешна');
// Сохраняем токен для последующих запросов
httpClient.setSecurityData({ token: result.access_token });
return result;
} catch (error) {
console.error('Ошибка авторизации:', error);
throw error;
}
}
async function getUserProfile() {
try {
const profile = await api.auth.getProfile();
console.log('Профиль пользователя:', profile);
return profile;
} catch (error) {
console.error('Ошибка получения профиля:', error);
throw error;
}
}
async function createProject() {
try {
const project = await api.projects.create({
name: 'Мой CDN проект',
description: 'Проект для хранения статических файлов',
s3Endpoint: 'https://s3.amazonaws.com',
s3Bucket: 'my-cdn-bucket',
s3Region: 'us-east-1',
s3AccessKey: 'AKIAIOSFODNN7EXAMPLE',
s3SecretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
});
console.log('Проект создан:', project);
return project;
} catch (error) {
console.error('Ошибка создания проекта:', error);
throw error;
}
}
async function getAllProjects() {
try {
const projects = await api.projects.findAll();
console.log('Список проектов:', projects);
return projects;
} catch (error) {
console.error('Ошибка получения проектов:', error);
throw error;
}
}
// Главная функция для демонстрации
async function main() {
console.log('🚀 Пример использования API клиента\n');
// 1. Регистрация
console.log('1. Регистрация пользователя...');
await registerUser();
console.log('✅ Готово\n');
// 2. Авторизация
console.log('2. Авторизация...');
await loginUser();
console.log('✅ Готово\n');
// 3. Получение профиля
console.log('3. Получение профиля...');
await getUserProfile();
console.log('✅ Готово\n');
// 4. Создание проекта
console.log('4. Создание проекта...');
await createProject();
console.log('✅ Готово\n');
// 5. Получение всех проектов
console.log('5. Получение списка проектов...');
await getAllProjects();
console.log('✅ Готово\n');
console.log('✨ Все операции выполнены успешно!');
}
// Запуск примера (раскомментируйте для выполнения)
// main().catch(console.error);
export { registerUser, loginUser, getUserProfile, createProject, getAllProjects };