Gin con Go: CRUD, filtros y paginación
La cuarta sesión del repositorio: CRUD de tareas, filtros, orden determinista y páginas consistentes.
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/tasksresponde201 Createdy añade la cabeceraLocation.GET /api/v1/tasks/:idresponde la tarea o un404claro.GET /api/v1/tasksacepta filtros de estado y prioridad, además depageypage_size.PATCH /api/v1/tasks/:idactualiza solo los campos enviados.DELETE /api/v1/tasks/:idresponde204 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.