Comunicación entre sistemas
REST APIs permiten que aplicaciones se comuniquen usando HTTP.
Métodos HTTP
| Método | Acción | Ejemplo |
|---|---|---|
| GET | Obtener datos | Listar usuarios |
| POST | Crear nuevo | Crear usuario |
| PUT | Actualizar todo | Actualizar perfil |
| PATCH | Actualizar parcial | Cambiar email |
| DELETE | Eliminar | Borrar usuario |
Estructura de URL
GET /api/users # Listar todos
GET /api/users/123 # Obtener uno
POST /api/users # Crear
PUT /api/users/123 # Actualizar
DELETE /api/users/123 # Eliminar
Fetch API
// GET
const res = await fetch('/api/users')
const users = await res.json()
// POST
const res = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ nombre: 'Ana', email: 'ana@email.com' })
})
// DELETE
await fetch('/api/users/123', { method: 'DELETE' })
Códigos de respuesta
| Código | Significado |
|---|---|
| 200 | OK |
| 201 | Creado |
| 400 | Error del cliente |
| 401 | No autorizado |
| 404 | No encontrado |
| 500 | Error del servidor |
Headers comunes
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer tu-token',
'Accept': 'application/json'
}
Manejo de errores
async function fetchData() {
const res = await fetch('/api/data')
if (!res.ok) {
throw new Error(`Error: ${res.status}`)
}
return res.json()
}
🔐 APIs para Fintech: Seguridad Obligatoria
Las APIs que manejan datos financieros tienen requisitos especiales de seguridad.
Headers de Seguridad Obligatorios
// Headers que TODA API financiera debe incluir
const securityHeaders = {
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains',
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': 'DENY',
'X-XSS-Protection': '1; mode=block',
'X-Request-ID': crypto.randomUUID(), // Trazabilidad
'Cache-Control': 'no-store', // No cachear datos sensibles
}
Autenticación para Open Banking
| Método | Uso | Cuándo |
|---|---|---|
| OAuth 2.0 + PKCE | Apps móviles | Conexión con bancos |
| mTLS (mutual TLS) | Server-to-server | APIs interbancarias |
| API Keys + HMAC | Webhooks | Verificar origen |
| JWT con rotación | Sesiones | Usuarios finales |
Logging para Auditoría
En fintech, "no logueamos eso" no es respuesta aceptable ante un regulador.
// Middleware de auditoría
const auditMiddleware = (req, res, next) => {
const auditLog = {
requestId: req.headers['x-request-id'] || crypto.randomUUID(),
timestamp: new Date().toISOString(),
method: req.method,
path: req.path,
userId: req.user?.id,
ip: req.ip,
userAgent: req.headers['user-agent'],
}
// Log al inicio
logger.info('API_REQUEST', auditLog)
// Log al finalizar (con duración)
res.on('finish', () => {
logger.info('API_RESPONSE', {
...auditLog,
statusCode: res.statusCode,
duration: Date.now() - startTime
})
})
next()
}
Rate Limiting por Endpoint
const rateLimits = {
'/api/login': { limit: 5, window: '1m' }, // Anti brute-force
'/api/transfer': { limit: 10, window: '1h' }, // Límite fraude
'/api/balance': { limit: 60, window: '1m' }, // Uso normal
'/api/verify': { limit: 3, window: '1d' }, // APIs costosas (KYC)
}