Volver al blog
Desarrollo de Software

Qué es una API REST y cómo funciona

ByteData Cloud29 de junio de 20263 min de lectura

Explicación clara y técnica de APIs REST: concepto, métodos HTTP, códigos de estado, autenticación, buenas prácticas y ejemplos reales con JSON.

La columna vertebral del internet moderno

API REST es el estándar de comunicación entre sistemas. Cuando usas una app del banco, pides un Uber o revisas el clima, tu celular está consumiendo APIs REST.

¿Qué es una API?

API = Application Programming Interface. Es un contrato que permite que dos sistemas se comuniquen. La API define qué datos puedes pedir y qué operaciones puedes realizar.

REST = Representational State Transfer. Es un estilo arquitectónico con reglas claras:

  • Cada recurso tiene una URL única
  • Las operaciones usan métodos HTTP estándar
  • Sin estado (stateless): cada request contiene toda la información necesaria
  • Las respuestas son usualmente JSON
  • Métodos HTTP

    | Método | Acción | Ejemplo |

    |--------|--------|---------|

    | GET | Leer | GET /api/productos/123 |

    | POST | Crear | POST /api/productos |

    | PUT | Reemplazar | PUT /api/productos/123 |

    | PATCH | Actualizar parcial | PATCH /api/productos/123 |

    | DELETE | Eliminar | DELETE /api/productos/123 |

    Códigos de estado

  • **200 OK**: Éxito. El recurso se devuelve correctamente.
  • **201 Created**: Recurso creado con POST.
  • **400 Bad Request**: El cliente envió datos inválidos.
  • **401 Unauthorized**: Falta autenticación.
  • **403 Forbidden**: Autenticado pero sin permisos.
  • **404 Not Found**: El recurso no existe.
  • **500 Internal Server Error**: Error inesperado del servidor.
  • Autenticación

    **API Keys**: Una clave secreta en el header. Simple pero menos segura.

    **JWT (JSON Web Tokens)**: Token firmado que contiene claims (usuario, roles, expiración). El estándar actual.

    **OAuth 2.0**: Delega autenticación a un tercero (Google, Facebook). Usado para "Iniciar sesión con X".

    Ejemplo real

    Request: GET /api/clientes/456

    Headers: Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

    Respuesta:

    {

    "id": 456,

    "nombre": "Comercial XYZ Ltda.",

    "rut": "76.123.456-K",

    "email": "contacto@xyz.cl",

    "saldo_pendiente": 450000

    }

    Buenas prácticas

  • Versiona tu API: /api/v1/productos, /api/v2/productos
  • Usa nombres en plural: /productos, no /producto
  • Pagina resultados grandes: ?pagina=2&limite=50
  • Filtra con query params: ?categoria=hosting&activo=true
  • Documenta con OpenAPI/Swagger
  • Compartir