API de PostgREST

API REST generada automáticamente a partir de su esquema de PostgreSQL. No requiere código de backend.

Activar PostgREST

PostgREST se activa por servidor de bases de datos PostgreSQL. Para activarlo:

  1. Vaya a Servidores de bases de datos en el panel de control de sh0.
  2. Seleccione un servidor PostgreSQL existente (o cree uno).
  3. Haga clic en Activar PostgREST en la configuración del servidor.
  4. sh0 despliega una instancia de PostgREST, la conecta a su base de datos y aprovisiona un dominio SSL.
Tip
PostgREST solo está disponible para servidores PostgreSQL. MySQL, MariaDB, Redis y MongoDB no son compatibles.

Configuración

Después de activar PostgREST, puede configurar los siguientes ajustes desde el panel de control:

Rol anónimo

anon_role es el rol de PostgreSQL que se usa para las solicitudes no autenticadas. De forma predeterminada, sh0 crea un rol llamado anon con acceso de solo lectura al esquema public.

Use las sentencias GRANT y REVOKE de PostgreSQL para controlar a qué pueden acceder los usuarios no autenticados.

Esquemas expuestos

De forma predeterminada, PostgREST expone solo el esquema public. Puede configurar esquemas adicionales para exponer desde la configuración del panel de control. Las tablas de los esquemas no expuestos nunca son accesibles a través de la API.

Warning
Nunca exponga los esquemas pg_catalog ni information_schema. Exponga solo los esquemas que contienen tablas que desea que sean accesibles a través de la API.

Sintaxis de consultas

PostgREST usa parámetros de consulta para filtrar, ordenar, paginar y dar forma a la respuesta. Todos los endpoints siguen el patrón:

GET https://<your-domain>/<table_name>?select=<columns>&<filters>

Filtrado

Use filtros por columna con operadores:

OperadorSignificadoEjemplo
eqIgual?status=eq.active
neqDistinto?role=neq.admin
gt / gteMayor que / o igual?age=gte.18
lt / lteMenor que / o igual?price=lt.100
like / ilikeCoincidencia de patrón (distingue / no distingue mayúsculas)?name=ilike.*john*
inEn la lista?id=in.(1,2,3)
isIS (null, true, false)?deleted_at=is.null

Paginación

Use el encabezado Range o los parámetros de consulta limit y offset:

GET /users?limit=20&offset=40&order=created_at.desc

Incrustación de recursos (joins)

PostgREST detecta automáticamente las relaciones de clave foránea y permite incrustar recursos relacionados:

GET /orders?select=id,total,customer(name,email)

Esto devuelve cada pedido con el nombre y el correo electrónico del cliente relacionado incrustados en la respuesta.

Autenticación con JWT

PostgREST verifica los tokens JWT enviados en el encabezado Authorization. Cuando se proporciona un JWT válido, PostgREST cambia al rol especificado en la claim role del token y establece todas las claims como variables de sesión de PostgreSQL.

Esto se integra con las políticas de seguridad a nivel de fila (Row-Level Security, RLS) de PostgreSQL. Por ejemplo, una política que comprueba current_setting('request.jwt.claims')::json->>'sub' puede restringir filas según el usuario autenticado.

Tip
Combine PostgREST con el servicio de autenticación de sh0 (Logto) para obtener un flujo de autenticación completo. Logto emite JWT que PostgREST puede verificar directamente.

Especificación OpenAPI

Cada instancia de PostgREST expone una especificación OpenAPI 3.0 en vivo en su URL raíz (GET /). Úsela para:

  • Importarla en Postman o Insomnia para hacer pruebas.
  • Generar SDK de cliente tipados con openapi-generator.
  • Alimentar herramientas de documentación como Swagger UI.