Gin con Go: CRUD, filtros y paginación

La cuarta sesión del repositorio: CRUD de tareas, filtros, orden determinista y páginas consistentes.

View repository ↗

This publication is currently available in Spanish. Read the original ↗

Contexto

La cuarta sesión del repositorio de Gin con Go reúne las operaciones que una API suele necesitar para trabajar con un recurso: crear, consultar, actualizar, listar y eliminar tareas.

El ejemplo es autónomo y usa memoria para concentrarse en el contrato HTTP: las rutas, los estados de respuesta, los filtros y los metadatos que recibe un cliente.

El detalle que cambió el listado

Al trabajar la paginación, apareció una decisión que parece pequeña pero evita resultados inconsistentes: primero hay que ordenar y después paginar.

El ejemplo ordena las tareas por created_at descendente y, si dos tareas coinciden en el mismo instante, usa el id como desempate. Solo después toma el segmento de la página solicitada.

Paginar antes de definir un orden estable puede hacer que una tarea aparezca en una página diferente entre dos consultas. Un orden determinista convierte page y page_size en un contrato predecible para cualquier cliente.

Qué incluye la sesión

  • POST /api/v1/tasks responde 201 Created y añade la cabecera Location.
  • GET /api/v1/tasks/:id responde la tarea o un 404 claro.
  • GET /api/v1/tasks acepta filtros de estado y prioridad, además de page y page_size.
  • PATCH /api/v1/tasks/:id actualiza solo los campos enviados.
  • DELETE /api/v1/tasks/:id responde 204 No Content.

El listado devuelve los elementos bajo data y metadatos con page, page_size, total y total_pages. También se valida la entrada y se protege el almacén en memoria para atender peticiones concurrentes.

La guía y el ejemplo ejecutable están disponibles en el repositorio:

Próximo paso

Seguir ampliando la serie con ejemplos pequeños que expliquen no solo qué ruta crear, sino también qué decisiones hacen que una API sea más clara para quien la consume.

← All publications