⚙️ Интеграция с фреймворками

Готовые примеры для популярных фреймворков | DAYTONA

🎯 Цель: Этот раздел содержит готовые примеры интеграции OZON Seller API SDK с популярными JavaScript/TypeScript фреймворками и платформами.

⚛️Next.js + React

Современный React фреймворк с поддержкой SSR, API Routes и статической генерации
  • API Routes - серверные эндпоинты
  • React Hooks - интеграция с компонентами
  • Middleware - аутентификация и кеширование
  • TypeScript - полная поддержка типов
  • // lib/ozon-client.ts import { OzonSellerAPI } from 'daytona-ozon-seller-api'; export const ozonApi = new OzonSellerAPI({ clientId: process.env.OZON_CLIENT_ID!, apiKey: process.env.OZON_API_KEY!, timeout: 30000, debug: process.env.NODE_ENV === 'development' });
    // pages/api/products.ts import type { NextApiRequest, NextApiResponse } from 'next'; import { ozonApi } from '../../lib/ozon-client'; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { if (req.method === 'GET') { try { const products = await ozonApi.product.getList({ limit: 20 }); res.status(200).json(products); } catch (error) { res.status(500).json({ error: error.message }); } } }
    // hooks/useProducts.ts import { useState, useEffect } from 'react'; export function useProducts() { const [products, setProducts] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetch('/api/products') .then(res => res.json()) .then(setProducts) .finally(() => setLoading(false)); }, []); return { products, loading }; }

    🚀Express.js

    Минималистичный веб-фреймворк для Node.js с поддержкой middleware и роутинга
  • REST API - создание API сервиса
  • Middleware - аутентификация и валидация
  • Error Handling - централизованная обработка ошибок
  • Rate Limiting - защита от спама
  • // server.js import express from 'express'; import { OzonSellerAPI } from 'daytona-ozon-seller-api'; const app = express(); const ozonApi = new OzonSellerAPI({ clientId: process.env.OZON_CLIENT_ID, apiKey: process.env.OZON_API_KEY }); // Middleware app.use(express.json()); // Routes app.get('/api/products', async (req, res) => { try { const products = await ozonApi.product.getList({ limit: parseInt(req.query.limit) || 20 }); res.json(products); } catch (error) { res.status(500).json({ error: error.message }); } }); app.listen(3000, () => { console.log('Server running on port 3000'); });

    🏗️NestJS

    Enterprise Node.js фреймворк с TypeScript, декораторами и dependency injection
  • Dependency Injection - IoC контейнер
  • Decorators - метапрограммирование
  • Guards & Pipes - валидация и авторизация
  • Modules - модульная архитектура
  • // ozon.service.ts import { Injectable } from '@nestjs/common'; import { OzonSellerAPI } from 'daytona-ozon-seller-api'; @Injectable() export class OzonService { private readonly api: OzonSellerAPI; constructor() { this.api = new OzonSellerAPI({ clientId: process.env.OZON_CLIENT_ID, apiKey: process.env.OZON_API_KEY }); } async getProducts(limit: number = 20) { return await this.api.product.getList({ limit }); } async updatePrices(priceUpdates: PriceUpdate[]) { return await this.api.pricesStocks.updatePrices(priceUpdates); } }

    💚Vue.js + Nuxt

    Прогрессивный фреймворк для создания пользовательских интерфейсов
  • Composition API - современный API
  • Reactivity - реактивность из коробки
  • Server Middleware - серверная логика
  • Auto-imports - автоматические импорты
  • // composables/useOzon.ts import { OzonSellerAPI } from 'daytona-ozon-seller-api'; export const useOzon = () => { const config = useRuntimeConfig(); const api = new OzonSellerAPI({ clientId: config.ozonClientId, apiKey: config.ozonApiKey }); const products = ref([]); const loading = ref(false); const fetchProducts = async () => { loading.value = true; try { const result = await api.product.getList({ limit: 20 }); products.value = result.result?.items || []; } finally { loading.value = false; } }; return { products: readonly(products), loading: readonly(loading), fetchProducts }; };

    ☁️AWS Lambda

    Serverless функции для обработки событий и создания API без управления серверами
  • Event-driven - обработка событий
  • Auto-scaling - автомасштабирование
  • Pay per use - оплата за использование
  • Cold start optimization - оптимизация
  • // lambda/products.js import { OzonSellerAPI } from 'daytona-ozon-seller-api'; // Initialize outside handler for connection reuse const ozonApi = new OzonSellerAPI({ clientId: process.env.OZON_CLIENT_ID, apiKey: process.env.OZON_API_KEY, timeout: 25000 // Lambda timeout - 5s }); export const handler = async (event, context) => { try { const { limit = 20 } = JSON.parse(event.body || '{}'); const products = await ozonApi.product.getList({ limit }); return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify(products) }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ error: error.message }) }; } };

    🐳Docker

    Контейнеризация приложений для изоляции и портируемости
  • Multi-stage builds - оптимизированные образы
  • Environment variables - конфигурация
  • Health checks - мониторинг здоровья
  • Microservices - микросервисная архитектура
  • # Dockerfile FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production FROM node:18-alpine RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY --chown=nextjs:nodejs . . USER nextjs EXPOSE 3000 ENV NODE_ENV=production CMD ["npm", "start"]

    🎯 Рекомендации по выбору

  • Next.js - для fullstack веб-приложений с SSR
  • Express.js - для простых API сервисов
  • NestJS - для enterprise приложений
  • AWS Lambda - для serverless архитектуры
  • Docker - для любых приложений в production
  • ⚠️ Важные моменты

    • Переменные окружения: Никогда не храните API ключи в коде
    • Rate limiting: Соблюдайте лимиты OZON API (1000 запросов/мин)
    • Error handling: Всегда обрабатывайте ошибки API
    • Timeout: Устанавливайте разумные таймауты запросов

    💡 Дополнительные ресурсы

  • Примеры кода - GitHub Examples
  • TypeScript типы - Полная поддержка автодополнения
  • Тестирование - Моки и тестовые утилиты
  • Документация - Все 278 API методов