DEV Community

Alexis Polo
Alexis Polo

Posted on • Edited on

¿Qué es una API y cómo uso Lambda?

¿Qué es una API y cómo la conecto con Lambda?
Una guía para los que recién están entrando al mundo del backend y no quieren leer documentación de 40 páginas.

¿Qué es una API?
Mira, una API no es nada del otro mundo. Es simplemente la forma en que dos programas se comunican. Uno pregunta, el otro responde. Eso es todo.

Le decis a tu hermano: "Oye, anda donde la tía Marlene y tráeme un seco de pollo que me guardo." Él va, donde la tía Marlene y te trae la comida y tu ni cuenta te diste cómo llegó allá.
Una API es ese hermano — tu solo pedis, el hace el proceso y te trae lo que necesitás. así nada más.

Cuando abres una app del clima, esa app no tiene los datos del tiempo guardados en tu celular. Le pregunta a un servidor externo a través de una API y ese servidor le responde con la información. Todo eso pasa en milisegundos y tú nunca lo ves.
Las APIs que vamos a usar aquí son REST APIs. Básicamente funcionan sobre internet, se comunican con verbos simples (GET, POST, PUT, DELETE) y responden en JSON, que es un formato de texto fácil de leer tanto para humanos como para máquinas.

Los verbos HTTP: cómo le dices a la API qué quieres
Cada vez que haces una petición a una API, usas un verbo que indica la intención. Son cuatro y tienen mucho sentido:

  • GET: Trae información Ver la lista de usuarios.
  • POST: Crea algo nuevo Registrar un usuario.
  • PUT: Modifica algo que ya existe cómo cambiar el nombre de un usuario.
  • DELETE: Borra algo, cómo Eliminar una cuenta.

La URL que apuntas se llama endpoint. Por ejemplo {midominio.com}/usuarios es un endpoint. El verbo le dice qué hacer con ese recurso.

¿Qué es AWS Lambda?
Aquí está la parte que más me gusta explicar porque cuando la entiendes, cambia cómo ves el desarrollo.
Normalmente para tener código corriendo en internet necesitas un servidor. Una máquina prendida todo el día esperando peticiones, aunque nadie las haga. Eso cuesta plata y alguien tiene que mantenerlo.
Lambda cambia eso completamente. Tú escribes tu función, la subes a AWS, y te olvidas del servidor. Lambda la mantiene dormida hasta que llegue una petición. Cuando llega, despierta, corre tu código, responde, y vuelve a dormir. Pagas solo por los milisegundos que estuvo activa.
Una función Lambda luce así:

export const handler = async (event) => {
  const nombre = event.queryStringParameters?.nombre || 'Mundo';

  return {
    statusCode: 200,
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      mensaje: `Hola, ${nombre}!`
    })
  };
};
Enter fullscreen mode Exit fullscreen mode

URL: https://{Id_Lambda}.lambda-url.us-west-2.on.aws/?nombre=Alexis

Resultado

Sin configurar puertos. Sin instalar nada. Solo la lógica que importa.

¿Y para qué API Gateway?

Lambda sola no tiene una URL pública. Nadie puede llegar a ella desde internet directamente. API Gateway es lo que le da esa puerta de entrada.

Tú defines las rutas, los métodos que acepta cada una, y a qué función Lambda apuntan. Así de simple:

GET    /usuarios         → función que lista usuarios
GET    /usuarios/{id}    → función que trae uno
POST   /usuarios         → función que crea uno
PUT    /usuarios/{id}    → función que lo actualiza
DELETE /usuarios/{id}    → función que lo borra
Enter fullscreen mode Exit fullscreen mode

Código real: CRUD sin base de datos
Para no complicar todo desde el inicio, vamos a guardar los datos en memoria dentro de Lambda. No persisten para siempre, pero sirven perfecto para probar que todo funciona antes de conectar una base de datos real.

export const handler = async (event) => {
  const metodo = event.requestContext?.http?.method;

  //obtiene id desde la URL
  const path = event.rawPath; // /usuarios/1
  const partes = path.split('/');
  const id = partes[2];

  let usuarios = [
    { id: '1', nombre: 'Alexis' },
    { id: '2', nombre: 'Ana' },
    { id: '3', nombre: 'Luis' },
  ];

  const data = event.body ? JSON.parse(event.body) : {};

  // GET todos
  if (metodo === 'GET' && !id) {
    return res(usuarios);
  }

  // GET uno
  if (metodo === 'GET' && id) {
    const user = usuarios.find(u => u.id === id);
    return res(user || {});
  }

  // POST
  if (metodo === 'POST') {
    usuarios.push({ id: '4', ...data });
    return res({ mensaje: 'Usuario creado' });
  }

  // PUT
  if (metodo === 'PUT' && id) {
    return res({ mensaje: `Usuario ${id} actualizado` });
  }

  // DELETE
  if (metodo === 'DELETE' && id) {
    return res({ mensaje: `Usuario ${id} eliminado` });
  }

  return res({ mensaje: 'OK' });
};

const res = (body) => ({
  statusCode: 200,
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(body),
});
Enter fullscreen mode Exit fullscreen mode

Subirlo a AWS en 5 pasos

  1. Crear la función Lambda AWS Console → Lambda → Crear función. Nombre: api-usuarios, runtime: Node.js 24.x
  2. Pegar el código y hacer Deploy Copia el código en el editor en línea, clic en Deploy. Listo.
  3. Crear el API Gateway API Gateway → Crear API → HTTP API. Conectas tu Lambda como integración.
  4. Definir las rutas Agregas las cinco rutas de arriba. Todas apuntan a la misma función.
  5. Probar Te dan una URL tipo https://abc123.execute-api.us-east-1.amazonaws.com/dev. La pegas en Postman y empiezas a hacer peticiones.

Para Terminar
Con esto ya tienes una API funcionando en la nube, sin servidor propio, sin base de datos, y sin gastar nada relevante. El siguiente paso cuando estés cómodo con esto es reemplazar el array en memoria por DynamoDB, que es la base de datos serverless de AWS. La estructura del código no cambia mucho, solo agregas las llamadas al SDK.
Pero eso para el siguiente post xD

Top comments (1)

Collapse
 
franciscojeg78 profile image
Francisco Escobar

Muy buena explicación! El uso de Lambda para exponer APIs es, sin duda.Una de las mejores formas de entender el potencial de no tener que gestionar servidores. Gracias por el paso a paso, muy útil!