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:
- Vaya a Servidores de bases de datos en el panel de control de sh0.
- Seleccione un servidor PostgreSQL existente (o cree uno).
- Haga clic en Activar PostgREST en la configuración del servidor.
- sh0 despliega una instancia de PostgREST, la conecta a su base de datos y aprovisiona un dominio SSL.
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.
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:
| Operador | Significado | Ejemplo |
|---|---|---|
| eq | Igual | ?status=eq.active |
| neq | Distinto | ?role=neq.admin |
| gt / gte | Mayor que / o igual | ?age=gte.18 |
| lt / lte | Menor que / o igual | ?price=lt.100 |
| like / ilike | Coincidencia de patrón (distingue / no distingue mayúsculas) | ?name=ilike.*john* |
| in | En la lista | ?id=in.(1,2,3) |
| is | IS (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.
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.