Implementación de un Health Check Endpoint en API con RSpec
Clase 6 de 33 • Curso de Creación de APIs con Ruby on Rails
Contenido del curso
Proyecto
- 3

Creación de APIs con Rails: Proyecto Blog API paso a paso
04:37 min - 4

Configuración de Gemas para Pruebas en Proyectos Rails
06:26 min - 5

Configuración de Gemas en Proyectos Rails: Arspec, Factory Bot y Database Cleaner
07:25 min - 6

Implementación de un Health Check Endpoint en API con RSpec
Viendo ahora - 7

Diseño de Casos de Uso y Diagramas de Entidad para Aplicaciones
03:16 min - 8

Diagrama entidad relación: usuario y post
01:41 min - 9

Modelado de Aplicaciones con TDD en Rails
05:59 min - 10

Validaciones y Pruebas TDD en Rails: Modelos USR y Post
07:07 min - 11

Implementación de Endpoints para Listar y Mostrar Posts con TDD
15:12 min - 12

Implementar controlador Posts con TDD
10:34 min - 13

Pruebas TDD para crear y actualizar posts
10:12 min - 14

Implementación de Métodos y Manejo de Excepciones en Rails API
10:23 min - 15

Active Model serializers: control total de JSON en Rails
06:03 min - 16

Búsqueda y Filtrado de Posts por Título con TDD
05:57 min - 17

Implementación de Búsqueda de Posts con Servicios en Rails
06:06 min - 18

Problema N+1 en Rails: Detección y Solución Eficaz
04:40 min - 19

Identificación y solución del problema N+1 en Rails
06:20 min - 20

Flujo de Autenticación en APIs con Tokens y Proveedores
05:29 min - 21

Tests con RSpec para autenticación de tokens
12:17 min - 22

Autenticación con Tokens: Implementación en Rails API
05:53 min - 23

Autenticación de Usuarios en Controladores Rails
09:19 min - 24

Autenticación y Seguridad en CRUD de Posts en Rails
09:17 min - 25

Pruebas de Creación y Actualización con Autenticación en Rails
14:21 min - 26

Probando API Ruby on Rails con Postman
10:43 min - 27

Caching en Aplicaciones Web: Funciones y Niveles
07:15 min - 28

Aceleración de Búsquedas en Rails con Caching
08:23 min - 29

Background Jobs en Rails: Conceptos y Funcionalidades
05:45 min - 30

Procesamiento en Background y Envío de Correos con Rails
09:45 min - 31

Envío de Correos en Rails con ActionMailer y Background Jobs
11:06 min - 32
Autenticación y Autorización con JWT y Auth0 en Aplicaciones Web
03:48 min
Cierre
Implementa un health check endpoint en Rails con RSpec y TDD para asegurar servicios confiables y monitoreables. Aprenderás a validar el estado de tu API con pruebas de integración, a responder en JSON con status code 200 y a configurar rutas y controladores de forma clara y mantenible.
¿Qué es un health check endpoint y para qué sirve?
Un health check es un endpoint convencional como /health o /health_check que responde con 200 cuando el servicio está operativo. Es una buena práctica porque permite el monitoreo continuo por herramientas como Pingdom o Runscope mediante un request periódico. Además, se relaciona con páginas de estado públicas como las de Heroku, GitHub o Twitter, usadas para verificar si una aplicación está en buen estado.
- Verificar disponibilidad del servicio con un request simple.
- Integración con Pingdom y Runscope a través de
/health. - Responder con 200 cuando todo está ok.
- Alertar al equipo si hay error o no hay respuesta.
¿Cómo escribir pruebas de integración con RSpec para el health endpoint?
La estrategia es TDD: primero se escriben las pruebas, luego la funcionalidad. Crea el directorio spec/requests para pruebas de integración y un archivo health_spec.rb. Incluye rails_helper y declara el tipo request para disponer de helpers como response y have_http_status.
# spec/requests/health_spec.rb
require 'rails_helper'
RSpec.describe 'Health Endpoint', type: :request do
describe 'GET /health' do
before { get '/health' }
it 'should return ok' do
payload = JSON.parse(response.body)
expect(payload).not_to be_empty
expect(payload['api']).to eq('ok')
end
it 'should return status code 200' do
expect(response).to have_http_status(:ok)
end
end
end
- Pruebas de integración con
type: :requestpara validar de extremo a extremo. beforeejecuta el requestget '/health'antes de cada ejemplo.response.bodyyJSON.parsepara obtener el payload.have_http_status(:ok)valida el status code 200 de forma expresiva.- Pruebas autodescriptivas con
it 'should return ok'para claridad.
¿Qué errores comunes se observaron al correr RSpec?
Al ejecutar las pruebas primero fallan, lo esperado en TDD. Se mencionan errores típicos y su solución directa:
- "Db schema rb doesn't exist yet": ejecutar
rails db:migrate. - "La constante RSpec no está inicializada": usar
RSpeccon la S en mayúscula. - "No existe una ruta para /health": agregar la ruta y el controlador.
¿Cómo implementar el controlador y la ruta en Rails?
Crea health_controller.rb heredando de ApplicationController. Define la acción que responde con un payload mínimo y status 200 usando la constante de Rails :ok.
# app/controllers/health_controller.rb
class HealthController < ApplicationController
def health
render json: { api: 'ok' }, status: :ok
end
end
Agrega la ruta para el endpoint /health apuntando a la acción health.
# config/routes.rb
Rails.application.routes.draw do
get 'health', to: 'health#health'
end
render json:define el payload en JSON.status: :oktraduce a 200 automáticamente.- Ruta
GET /healthconectada ahealth#health.
¿Qué incluye el payload del health check?
La idea es reflejar el estado de componentes clave. Se parte por el API: api: 'ok'. Este payload puede ampliarse para reportar otros servicios, por ejemplo, base de datos, manteniendo el formato legible y validable por pruebas de integración.
¿Tienes una variación de health check que uses en producción o más checks que te funcionen bien? Compártelo en los comentarios.