Una API con PostgreSQL sin código

Este es uno de los capítulos del tutorial Self hosted, auto alojamiento y soberanía digital. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Pon una API en tu vida… con #postgreSQL y en #Linux ¿Quizás este debería haber sido el título de este capítulo del tutorial sobre Self-Hosted, o no. Seguro, y lo digo porque a mi me ha pasado, que en alguna ocasión, te has encontrado con la necesidad de hacer o tener una API, para cualquier cosa. En estos casos, te entra la pereza de tener que programar una interfaz para relacionarte con la base de datos. Hacer el correspondiente CRUD, etc… Solo de escribirlo ya me entra la pereza. Pero, y si te digo que puedes hacer una API sin escribir una sola línea de código… Así es muy sencillo, y te cuento como hacerlo.

Una API sin tirar una línea de código con PostgreSQL

Una API con PostgreSQL sin código

¿Que es PostgREST?

Es una herramienta que proporciona una API RESTful automática para cualquier base de datos PostgreSQL. Permite exponer los datos de una base de datos PostgreSQL a través de una API RESTful sin necesidad de escribir código manualmente para el servidor. PostgREST es una herramienta útil para desarrolladores que necesitan una API RESTful para una base de datos PostgreSQL existente y desean minimizar el tiempo y esfuerzo que se necesita para crear una API personalizada desde cero.

¿Como utilizar PostgREST?

Para utilizar PostgREST, primero debes tener instalado PostgreSQL en tu sistema. Luego, sigue los siguientes pasos:

  • Descarga e instala PostgREST: Puedes descargar la última versión de PostgREST desde su sitio web oficial (https://postgrest.org/en/v7.0.0/installation.html). La instalación de PostgREST es relativamente sencilla y varía según el sistema operativo que estés utilizando. Asegúrate de seguir las instrucciones de instalación detalladas para tu sistema operativo.
  • Configura el archivo de configuración: Una vez que PostgREST está instalado, debes configurar el archivo de configuración. Este archivo se llama postgrest.conf y se utiliza para configurar la conexión a la base de datos PostgreSQL, definir los esquemas de la base de datos que quieres exponer a través de la API, configurar la seguridad y otros ajustes de configuración. Puedes encontrar más información sobre cómo configurar el archivo de configuración en la documentación oficial de PostgREST (https://postgrest.org/en/v7.0.0/configuration.html).
  • Inicia el servidor PostgREST: Una vez que el archivo de configuración está configurado, puedes iniciar el servidor PostgREST. Para hacer esto, debes ejecutar el comando postgrest . El servidor comenzará a ejecutarse y estará disponible en la dirección URL que especifiques en el archivo de configuración.
  • Prueba la API: Finalmente, puedes probar la API para asegurarte de que esté funcionando correctamente. Puedes enviar solicitudes HTTP a la dirección URL de la API utilizando herramientas como curl o un cliente de API RESTful como Postman.

Un ejemplo práctico

Actualmente, tengo levantada una instancia de PostgreSQL en mi equipo utilizando Docker, como ya te podías imaginar. Además esto lo hice con Docker Compose, lo que me permite además tener pgadmin4 para gestionar la base de datos. A continuación, te dejo mi docker-compose.yml,

version: '3.8'

services:
  postgres:
    container_name: postgres
    image: postgres:latest
    init: true
    restart: unless-stopped
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: test_db
    ports:
      - 5432:5432
    volumes:
      - postgres_data:/var/lib/postgresql/data
    logging:
      driver: journald
  pgadmin:
    container_name: pgadmin4
    image: dpage/pgadmin4
    init: true
    restart: unless-stopped
    environment:
      PGADMIN_DEFAULT_EMAIL: el@correo.es
      PGADMIN_DEFAULT_PASSWORD: root
    volumes:
      - pgadmin:/var/lib/pgadmin
    ports:
      - 5050:80
    logging:
      driver: journald

volumes:
  postgres_data: {}
  pgadmin: {}

Para mostrarte el potencial de esta herramienta, he seguido el tutorial que se encuentra en la página oficial de esta herramienta. Así, lo primero ha sido crear un esquema, la tabla asociada y algunos requisitos adicionales,

create schema api;
create table api.todos (
  id serial primary key,
  done boolean not null default false,
  task text not null,
  due timestamptz
);

insert into api.todos (task) values
  ('finish tutorial 0'), ('pat self on back');

create role web_anon nologin;

grant usage on schema api to web_anon;
grant select on api.todos to web_anon;

create role authenticator noinherit login password 'mysecretpassword';
grant web_anon to authenticator;

A continuación es necesario definir un archivo de configuración config.ini. Algo tan sencillo como lo que te muestro a continuación,

db-uri = "postgres://root:root@localhost:5432/db_test"
db-schemas = "api"
db-anon-role = "web_anon"

A partir de aquí se trata de levantar el servicio, utilizando la siguiente instrucción,

./postgres config.ini

Y lo que verás será lo siguiente,

Listening on port 3000
Attempting to connect to the database...
Connection successful

Ahora ya puedes hacer una llamada para que puedas hacerte una idea de la potencia de esta herramienta,

curl http://localhost:3000/todos

Lo que te devuelve lo siguiente,

[
  {
    "id": 1,
    "done": false,
    "task": "finish tutorial 0",
    "due": null
  },
  {
    "id": 2,
    "done": false,
    "task": "pat self on back",
    "due": null
  }
]

El vídeo

A continuación encontrarás lo mismo, pero en formato vídeo.


Más información,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *