Probando API Ruby on Rails con Postman

Clase 26 de 33Curso de Creación de APIs con Ruby on Rails

Resumen

Has construido un API con Ruby on Rails guiado por test-driven development (TDD) y ahora lo ves en acción con Postman, verificando respuestas reales, estados HTTP y autenticación. Aquí encuentras los pasos esenciales para ejecutar el servidor, poblar datos con Factory Bot, y probar endpoints para listar, crear y actualizar posts con cuerpos JSON y headers de autorización.

¿Cómo levantar y comprobar el API con Postman y línea de comando?

Arranca el servidor con el comando de Rails y valida rápidamente que el API responde antes de abrir Postman. También puedes formatear la salida JSON en consola con la herramienta jq para leer mejor las respuestas.

  • Ejecuta el servidor en el puerto 3000.
  • Verifica el endpoint de salud con curl.
  • Usa jq para formatear JSON legiblemente.
rails s
curl http://localhost:3000/help | jq

En Postman, crea un request GET a localhost:3000/help. Allí puedes: - Añadir parámetros y headers fácilmente. - Revisar cuerpo, headers y cookies de la respuesta. - Implementar pruebas si usas una versión avanzada.

¿Cómo poblar la base de datos con Factory Bot y preparar el entorno?

Para probar endpoints más interesantes como listar posts, primero necesitas datos. Mueve Factory Bot y Faker al entorno de desarrollo en el Gemfile, ejecuta bundle y usa la Rails console para crear usuarios y posts de prueba.

  • Incluye las gemas en desarrollo y pruebas.
  • Recarga dependencias con bundle.
  • Abre consola y crea datos con Factory Bot.
bundle
rails c

En la consola:

# Crear usuarios de prueba
u1 = FactoryBot.create(:user)
u2 = FactoryBot.create(:user)

# Crear listas de posts asociados al usuario
FactoryBot.create_list(:post, 10, user: u1)
FactoryBot.create_list(:post, 10, user: u2)

Consejo útil: el guion bajo _ en Rails console hace referencia al resultado de la última instrucción, lo que agiliza consultas encadenadas.

¿Cómo probar endpoints protegidos: listar, crear y actualizar posts?

Con datos creados, valida el listado, la creación con autenticación y la actualización. Guarda tus requests en una colección de Postman para reutilizarlos.

¿Cómo listar posts con serializer y verificar la respuesta?

En Postman, envía un GET a localhost:3000/posts. Verás: - Campos como id, título y contenido. - El autor incluido gracias a Active Model Serializer.

Guarda este request como “Listar posts” en una colección, por ejemplo: “Platzi blog API”.

¿Cómo crear un post con body JSON y autorización?

Crea un request POST a localhost:3000/posts, con cuerpo en formato raw JSON. La estructura debe incluir el nodo raíz post y llaves entre comillas.

  • Primero, sin autenticación: debe responder 401 no autorizado.
  • Luego, añade el header de autorización con el token de un usuario.

Ejemplo de body:

{
  "post": {
    "title": "Título de ejemplo",
    "content": "Contenido del post.",
    "published": true
  }
}

En la Rails console, obtén el token de autenticación del usuario y pégalo en Postman en el header Authorization. Al reenviar, la API crea el post y devuelve status 201 con el contenido creado.

Guarda este request como “Crear post” en la misma colección.

¿Cómo actualizar un post por id y confirmar cambios en la consola?

Para actualizar, usa el id del post. En el ejemplo, se toma el último creado con id 51 y se verifica a qué usuario pertenece. Asegúrate de usar el mismo token de autenticación.

  • Endpoint: localhost:3000/posts/:id.
  • Método: el que tu API acepte para actualización.
  • Body raw JSON con los atributos a cambiar.

Ejemplo de body para actualizar el título:

{
  "post": {
    "title": "Título actualizado"
  }
}

Incluye el header Authorization con el token y envía la petición. La respuesta devuelve status OK y el nuevo contenido. En la Rails console, usa reload para confirmar que el cambio se guardó en base de datos:

post.reload

Habilidades y conceptos reforzados: - Arranque y verificación de servidor con rails s y curl. - Formateo de JSON en consola con jq. - Población de datos con Factory Bot y uso de create_list. - Organización de requests en colecciones de Postman. - Manejo de headers de Authorization y uso de token de autenticación. - Respuestas HTTP y estados como 401 y 201. - Uso de Active Model Serializer para estructurar la salida. - Productividad en Rails console con _ y reload.

¿Te quedó alguna duda sobre el flujo en Postman, el body JSON o la autorización? Comparte tus preguntas y cuéntanos qué otro endpoint te gustaría probar a continuación.