Files
api-codegen/example.ts
S.Gromov 15ed8c8b8d feat: инициализация API CodeGen
CLI утилита для генерации TypeScript API клиента из OpenAPI спецификации.
- Поддержка локальных файлов и URL для спецификаций
- Кастомизация имени выходного файла через флаг --name
- Генерация типизированного клиента с SWR хуками
- Минимальный вывод логов для лучшего UX
2025-10-26 22:30:58 +03:00

137 lines
4.0 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Пример использования сгенерированного 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 };