Skip to main content

api-integration

REST/GraphQL API client design, rate limiting, error handling, and authentication best practices

Datos de origen

Repositorio
Hack23/riksdagsmonitor
Última actividad en el origen
16 de abril de 2026 a las 09:31
Idioma detectado de SKILL.md
inglés
Estrellas
12
Forks
4

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
api-integration
description
REST/GraphQL API client design, rate limiting, error handling, and authentication best practices
license
CC-BY-4.0
# API Integration Skill ## 🔴 AI FIRST Quality Principle > **Apply the AI FIRST principle: never accept first-pass quality. Minimum 2 iterations. Read all output, improve every section. No shortcuts.** ## Purpose Expert knowledge in building robust API clients with proper error handling, rate limiting, authentication, and retry logic. ## Core Principles 1. **Resilience** - Handle failures gracefully 2. **Rate Limiting** - Respect API limits 3. **Retry Logic** - Exponential backoff 4. **Circuit Breaker** - Fail fast when needed 5. **Security** - Secure credential storage ## Enforces - REST/GraphQL client patterns - Rate limiting and throttling - Retry logic with exponential backoff - Circuit breaker pattern - Error handling and recovery - Authentication (OAuth, API keys, JWT) - Request/response logging - Timeout configuration ## API Client Pattern ```javascript class APIClient { constructor(config) { this.baseUrl = config.baseUrl; this.timeout = config.timeout || 30000; this.retries = config.retries || 3; this.circuitBreaker = new CircuitBreaker(); } async request(endpoint, options = {}) { if (this.circuitBreaker.isOpen()) { throw new Error('Circuit breaker open'); } for (let attempt = 1; attempt <= this.retries; attempt++) { try { const response = await fetch( `${this.baseUrl}${endpoint}`, { ...options, timeout: this.timeout } ); if (!response.ok) { throw new APIError(response.status, response.statusText); } this.circuitBreaker.recordSuccess(); return await response.json(); } catch (error) { if (attempt === this.retries) { this.circuitBreaker.recordFailure(); throw error; } await this.delay(1000 * Math.pow(2, attempt)); } } } } ``` ## When to Use - Building API clients - Integrating external services - Handling API failures - Rate limit management - Authentication implementation ## References - [REST API Design](https://restfulapi.net/) - [Circuit Breaker Pattern](https://martinfowler.com/bliki/CircuitBreaker.html) --- **Version**: 1.0 | **Last Updated**: 2026-02-06 | **Category**: Development & Operations
Ver en GitHub