PRODPlataforma BaaS soberana europeaAbrir panel →

Ingeniería · 9 lectura mínima

Compatibilidad PostgREST: qué cubre y alternativas

Affane Daylami · Fondateur · 3 de agosto de 2026

volver al blog

PostgREST transforma un esquema PostgreSQL en una API REST sin backend para escribir. Es una respuesta clara a una necesidad específica, no un backend completo. La confusión entre ambos explica la mayoría de las decepciones que leemos en los comentarios online.

Este texto en inglés se generó automáticamente a partir del original en francés y aún no ha sido revisado.
Esta página fue traducida automáticamente. La versión en inglés es autorizada.

Este artículo detalla lo que realmente cubre PostgREST, lo que le deja a usted y compara alternativas serias, hasta lo que Aurabase realmente cubre internamente, verificado en su código en lugar de asumirlo.

Lo esencial

  • PostgREST genera una API REST a partir de un esquema de Postgres: filtros, incrustación de relaciones, llamadas RPC, RLS impulsado por JWT, especificación OpenAPI, sin una línea de código backend.
  • Lo que no hace de forma nativa: emitir JWT, almacenar archivos, enviar mensajes en tiempo real o proporcionar un agrupador de conexiones con alternancia de funciones integrada.
  • En Aurabase, un proyecto de motor Postgres se ejecuta en una instancia real dedicada de PostgREST v12.2.8, no una reimplementación. Un proyecto de motor MongoDB pasa por una capa REST específica de Aurabase, inspirada en las mismas convenciones pero con diferentes límites.
  • Las alternativas van desde PostgREST autohospedado (todo lo que se ensambla a su alrededor) hasta un backend completo (Supabase, Aurabase), a través de API GraphQL como Hasura o PostGraphile.
#
Definición

¿Qué es exactamente PostgREST?

PostgREST es un servidor web autónomo que transforma una base de datos PostgreSQL existente en una API REST, directamente desde su esquema. No hay una capa de aplicación que escribir: tablas, vistas y funciones se convierten en rutas, y los permisos SQL (roles, políticas RLS) se convierten en la capa de autorización.

En concreto, PostgREST cubre cinco capacidades que surgen en casi todas las evaluaciones:

  • Filtrado horizontal: alrededor de treinta operadores (eq, gt, like, ilike, in, is, cs, ov, fts...) directamente en la cadena de consulta.
  • Filtrado vertical e incrustación — ?select= proyecta columnas e incrusta relaciones mediante clave externa, por ejemplo customer:customers(email).
  • RPC: un POST /rpc/{fonction} llama directamente a una función SQL, que se convierte en un punto final.
  • RLS impulsado por JWT: PostgREST cambia el rol activo de Postgres según el token recibido (SET LOCAL ROLE), por lo que sus políticas se aplican tal cual, sin lógica de autorización duplicada en el lado de la aplicación.
  • OpenAPI autogenerada: la especificación se deduce del esquema expuesto, sin un archivo que mantener a mano.
Consulta típica de PostgRESTbash
curl "https://<gateway>/v1/db/<project_id>/orders \
  ?select=id,total,customer:customers(email) \
  &status=eq.paid \
  &order=created_at.desc" \
  -H "apikey: <votre-cle-api>"

Una única solicitud HTTP filtra los pedidos pagados, incorpora el correo electrónico del cliente mediante una clave externa y ordena por fecha, sin tener que escribir una única ruta a mano.

El RPC sigue la misma lógica: una función SQL ya escrita en su base de datos se convierte en un punto final POST, con sus argumentos pasados en JSON.

llamada RPCbash
curl -X POST "https://<gateway>/v1/db/<project_id>/rpc/monthly_revenue" \
  -H "apikey: <votre-cle-api>" \
  -H "Content-Type: application/json" \
  -d '{"year": 2026, "month": 8}'

Este principio (el esquema de Postgres es la única fuente de verdad de la API) es lo que hace que PostgREST sea predecible: cada cambio de comportamiento pasa por una migración de SQL, nunca a través de una capa de aplicación separada que podría derivar del esquema real. El proyecto es de código abierto, desarrollado en GitHub, independiente de cualquier proveedor de BaaS en particular.

#
Límites

Lo que PostgREST no hace

PostgREST resuelve la capa CRUD. No resuelve el resto del backend de una aplicación. Cuatro deficiencias ocurren sistemáticamente entre los equipos que lo adoptan solos.

  • Autenticación: sin emisión de JWT ni gestión de usuarios integrada. Debe compilarlo en SQL o delegarlo a un servicio externo.
  • Almacenamiento de archivos — ninguno. Queda por conectar por separado un cubo S3 o equivalente.
  • Tiempo real: PostgREST responde a solicitudes HTTP únicas, no envía ningún evento.
  • Grupo de conexiones: el propio PostgREST se conecta a Postgres, pero no integra ningún grupo avanzado. A escala, administrarlo se convierte en una decisión operativa en sí misma: un pooler en modo de transacción clásico entra en conflicto con el mecanismo de recarga del esquema PostgREST (vea a continuación cómo Aurabase resuelve este compromiso).
Información

Ninguna de estas deficiencias es un defecto de diseño: PostgREST realiza un trabajo específico (esquema → API REST), de forma voluntaria. Es este perímetro estrecho lo que hace que su comportamiento sea predecible.

Una consecuencia práctica merece quedar claramente establecida: sin autenticación, sus políticas RLS se convierten en el único límite de seguridad entre un cliente anónimo y sus datos. Una política mal redactada sobre el rol anon no se ve superada por una capa de aplicación adicional: no existe ninguna.

#
Comprobado en código

PostgREST en Aurabase: lo que realmente se cubre

En un proyecto de motor Aurabase Postgres (el motor predeterminado), la puerta de enlace enruta cada solicitud CRUD directamente a una instancia PostgREST v12.2.8 dedicada a este proyecto, dos réplicas, ubicadas junto con el clúster Postgres del inquilino. Esta no es una compatibilidad aproximada: es el binario ascendente de PostgREST en sí, con los mismos operadores, la misma incrustación, el mismo RPC, el mismo RLS impulsado por JWT.

En un proyecto de motor MongoDB, la historia es diferente. MongoDB no tiene equivalente a PostgREST: estas solicitudes se enrutan a un servicio interno de Aurabase, que reimplementa un subconjunto de las mismas convenciones (nombres de operador idénticos, sintaxis ?select= con incrustación, encabezados Prefer y Content-Range) pero en un motor de documentos, no relacional. Esta capa tiene sus propias limitaciones: una incrustación solicitada en la representación devuelta por una mutación se niega explícitamente en lugar de ignorarse silenciosamente, y no existe una ruta RPC equivalente a las funciones SQL.

La distinción cuenta a la hora de elegir

La compatibilidad total con PostgREST (incluidos RPC y RLS) es un hecho del motor Postgres, no una garantía entre motores. Si su proyecto depende de funciones SQL expuestas en RPC, el motor Postgres es la única opción a partir de hoy.

Un detalle técnico contrasta con la intuición: cada instancia de PostgREST dedicada permanece conectada directamente al Postgres principal, sin pasar por el pooler PgBouncer implementado para este inquilino. Razón supuesta: el modo de agrupación de transacciones interrumpiría la recarga del esquema PostgREST, que se basa en LISTEN/NOTIFY, una conexión persistente, incompatible con un grupo que recicla la conexión para cada transacción.

Otro detalle útil en producción: un proyecto inactivo se puede pausar para ahorrar recursos. La primera solicitud en un proyecto inactivo activa su activación y recibe un 503 con un retraso de reintento, el tiempo para que la instancia dedicada de PostgREST vuelva a funcionar: un compromiso supuesto entre costo y latencia en frío, no un incidente oculto.

#
Comparación

¿Qué alternativas a PostgREST existen?

PostgREST tiene un uso claro: el esquema de Postgres es la fuente de verdad y el equipo quiere evitar escribir una capa CRUD a mano. Aparte de este caso específico, existen varias familias de alternativas dependiendo de lo que desee agregar: desde nada en absoluto (simplemente autohospedado) hasta un backend completo listo para usar.

La siguiente tabla compara lo que cada opción cubre de forma nativa y lo que deja explícitamente a usted, sin emitir juicios de valor sobre la arquitectura elegida para cada proyecto.

PostgREST autohospedadoAPI REST autogenerada (filtros, incrustación, RPC, RLS).Autenticación, almacenamiento, tiempo real, interfaz de usuario de administración: todo para armar.
SupabaseFunciones integradas de autenticación PostgREST + (GoTrue), almacenamiento, tiempo real y borde.Pila heterogénea (Elixir/Go/TS/Node) ensamblada servicio por servicio.
Hasura/PostGraphileAPI GraphQL generada automáticamente desde Postgres.Enfoque GraphQL, no REST: comparación dedicada a continuación.
directoUI de administrador + API REST/GraphQL general, multi-DBMS.Diseñado para gestión de datos/CMS, no para un backend de aplicación completo.
Framework hecho a mano (Express, FastAPI, Rails…)Control total en todos los caminos.CRUD, validación, autenticación, agrupación, todo escrito a mano.
AurabaseReal PostgREST dedicado por proyecto Postgres + autenticación, almacenamiento, tiempo real, funciones perimetrales e IA ya integradas.En el motor MongoDB, la capa REST reconstruida por Aurabase, no por PostgREST.

Un punto que a menudo se subestima al elegir "autohospedado": PostgREST en sí sigue siendo liviano de ejecutar, pero la operación de producción (actualización de versión, alta disponibilidad, asociación con un pooler, monitoreo) sigue siendo enteramente su responsabilidad: es este trabajo operativo, no el software, lo que absorben las plataformas administradas.

Para obtener una comparación detallada entre los enfoques GraphQL (pg_graphql, Hasura y PostGraphile), consulte nuestro artículo dedicado a la API GraphQL en Postgres.

#
decisión

como elegir

Cuatro situaciones surgen con mayor frecuencia. La elección correcta depende principalmente de lo que esté dispuesto a montar y mantener usted mismo.

  • Solo desea una API REST sobre un esquema de Postgres existente, nada más. PostgREST autohospedado es suficiente: hace exactamente lo que hace y no es necesario instalar nada más.
  • Necesita autenticación, almacenamiento y tiempo real adicionales, y está listo para ensamblar varios servicios. Supabase, o PostgREST acompañado de su propia pila de aplicaciones, satisface esta necesidad.
  • Prefieres GraphQL a REST. Hasura o PostGraphile cubren este terreno: una elección arquitectónica diferente, no un reemplazo directo de PostgREST.
  • Quiere un backend completo de Postgres sin unir múltiples servicios separados. Este es el ángulo que documenta nuestra arquitectura Rust unificada : PostgREST real para la capa CRUD, rodeado de forma nativa por funciones de autenticación, almacenamiento, tiempo real y de borde.
#
Preguntas frecuentes

Preguntas frecuentes

¿Qué es PostgREST?+
PostgREST es un servidor web de código abierto que transforma una base de datos PostgreSQL existente en una API REST, directamente desde su esquema: tablas, vistas y funciones se convierten en rutas, sin un backend para escribir.
¿PostgREST puede reemplazar un backend completo?+
No. PostgREST cubre la capa CRUD (filtros, incrustación, RPC, RLS) pero no la emisión JWT, el almacenamiento de archivos o el tiempo real. Un backend completo requiere ensamblar estos ladrillos usted mismo o adoptar una plataforma que ya los integre.
¿Aurabase es 100% compatible con PostgREST?+
En un proyecto de motor Postgres, sí: Aurabase enruta a una instancia real de PostgREST, no a una reimplementación. En un proyecto de motor MongoDB, no: la capa REST es un subconjunto de las convenciones PostgREST reconstruidas por Aurabase en un motor de documentos, con diferentes límites (sin RPC, incrustación rechazada en caso de mutaciones).
¿Cómo obtener una API REST automática en Postgres sin escribir un backend?+
Dos opciones principales: instalar tú mismo PostgREST delante de tu base de datos (lee el diagrama y expone las rutas), o utilizar una plataforma que ya lo integre –Supabase o Aurabase, por ejemplo– para evitar explotar la instancia además de su uso.

¿LISTO PARA IMPLEMENTAR?

Tu backend en cinco minutos.

No se requiere tarjeta de crédito · 500 MB gratis · 50,000 MAU