Contenido del curso

Proyecto

Probando API Ruby on Rails con Postman

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.