Prueba tu servidor gRPC con Postman

Resumen

Probar un servidor gRPC en Go con Postman es más sencillo de lo que parece cuando activas server reflection y levantas tu base de datos en Docker. Aquí verás cómo correr el servidor, conectar Postman y validar los métodos setStudent y getStudent paso a paso, ideal si estás construyendo tu primera API gRPC.

Cómo levanto la base de datos en Docker para gRPC

Antes de tocar el servidor, necesitas la base de datos corriendo. Vamos a usar Docker para construir la imagen y exponer el puerto correcto.

El flujo es directo. Construyes la imagen con un tag identificable y luego la ejecutas mapeando el puerto que tu servidor espera.

  • Construye la imagen con el tag platzi-grpc-db para reconocerla fácil.
  • Ejecuta docker run con el flag -p 54321:5432, donde 54321 es el puerto externo y 5432 es el que usa Postgres dentro del contenedor.
  • Verifica que el puerto coincida con el de tu archivo de conexión a la base de datos.

¿Por qué mapeo el puerto 54321 al 5432? Porque Postgres siempre corre en 5432 dentro del contenedor, pero tú expones 54321 hacia tu máquina para evitar conflictos con otras instancias de Postgres locales.

Una vez levantada, la tabla que creaste previamente queda lista para recibir inserciones desde tu servidor.

Cómo ejecuto el servidor gRPC en Go

Con la base de datos arriba, abres una nueva terminal y corres el servidor con un solo comando: go run apuntando al archivo main.go dentro de server/student. Eso es todo. Tu servidor gRPC queda escuchando en el puerto definido, listo para recibir peticiones.

Cómo conecto Postman a un servidor gRPC con reflection

Postman ya soporta gRPC de forma nativa, así que no necesitas herramientas adicionales para probar tus métodos.

El truco está en aprovechar server reflection, que permite a Postman descubrir automáticamente los servicios y métodos expuestos sin que tú cargues manualmente el archivo .proto.

Qué pasos sigo en Postman para crear el request

  • Haz clic en new y selecciona gRPC request en lugar de HTTP o WebSocket.
  • Escribe la URL del servidor, en este caso apuntando al puerto 5060.
  • Selecciona la opción de cargar servicios mediante server reflection.
  • Postman detectará y listará los métodos disponibles, como setStudent y getStudent.

¿Qué es server reflection en gRPC? Es una funcionalidad que permite a un cliente consultar al servidor qué servicios y métodos expone, sin necesidad de tener los archivos .proto localmente. Por eso agregar esas líneas al servidor fue clave.

Gracias a esto, Postman rellena por ti la estructura de datos esperada en cada llamada.

Cómo pruebo los métodos setStudent y getStudent

Con todo conectado, llega la parte divertida: validar que tu lógica funciona end-to-end.

Cómo invoco setStudent desde Postman

Al seleccionar setStudent, presionas el ícono que genera un ejemplo automático del request. Postman te entrega la estructura completa basada en tu definición.

Para este caso usamos estos valores:

  • Edad: 20.
  • ID: student1 (lo enviamos manualmente como identificador).
  • Nombre: el que viene por defecto en el ejemplo generado.

Al invocar el método con el botón azul, el servidor responde con el ID del estudiante insertado, que es justo lo que el response tiene definido devolver. Inserción confirmada.

Cómo verifico la inserción con getStudent

Ahora cambias al método getStudent, copias el ID que acabas de insertar (ST1 o el que hayas usado), generas otro ejemplo de request y lo ejecutas.

La respuesta debe traerte el estudiante completo: nombre, edad e ID. Si los datos coinciden con lo que enviaste, tu servidor está leyendo y escribiendo correctamente contra Postgres.

¿Qué hago si Postman no detecta los servicios gRPC? Revisa que hayas registrado server reflection en el código del servidor y que la URL apunte al puerto correcto donde está escuchando tu aplicación.

Con setStudent y getStudent funcionando, tienes la base validada para seguir agregando servicios. ¿Qué método te gustaría implementar después: actualizar o eliminar estudiantes? Cuéntame en los comentarios.