PostgREST

Si vous voulez accéder à une base de données PostgreSQL avec une API REST sans développer une application CRUD, PostgREST est fait pour vous. Avec cette petite application vous allez pouvoir interroger votre base de données avec des requêtes REST.

Installation

Pour l'installation, aller sur le dépôt git de PostgREST dans la section Assets. Actuellement la dernière version disponible est la 5.1.0.

Décompressé ensuite le fichier. Dans l'archive se trouve un fichier exécutable "postgrest". Cette exécutable est à placer dans le dossier bin de PostgreSQL.

Sous Windows par défaut : "C:\Program Files\PostgreSQL\<version>\bin"

Sous Linux par défaut : "/usr/lib/postgresql/<version>/bin/"

PostgREST fonctionne avec la version 9.5 ou plus de PostgreSQL.

Configuration

Pour configurer postgREST il faut créer un fichier de configuration.


db-uri       = "postgres://utilisateur:mot_de_passe@adresse_ip:5432/nom_de_la_base_de_donnees"

db-schema    = "nom_du_schema"

db-anon-role = "nom_du_role"

Ce sont les trois choses obligatoires à configurer pour faire fonctionner l'application. Par défaut quand une base de données est créée le schéma porte le nom public et l'utilisateur et le rôle est postgres.

Cependant je vous recommande de créer de nouveaux rôles et utilisateurs pour plus de sécurité.

Pour tester (à ne pas faire en production) vous pouvez écrire :


db-uri       = "postgres://postgres:mdp@127.0.0.1:5432/nom_de_la_base_de_donnees"

db-schema    = "public"

db-anon-role = "postgres"

Démarrer le serveur

Pour démarrer le serveur il suffit d'exécuter l'exécutable dans le terminal en ajoutant le chemin du fichier de configuration.

postgrest /home/du/fichier.conf

Le serveur est démarré sur le port 3000 par défaut. Vous pouvez changer le port avec la variable de configuration server-port.

La documentation de configuration de PostgREST détaille tous les paramètres de configuration.

Interroger le serveur

Vous pouvez normalement avec un navigateur ou curl interroger la base de données avec des URL REST.

Pour trouver tous les livres :

http://127.0.0.1:3000/book

Pour sélectionner que les id et titres:

http://127.0.0.1:3000/book?select=id,title

Pour trouver tous les livres avec un titre commençant par Harry Potter :

http://127.0.0.1:3000/book?title=like.Harry Potter*

Pour ajouter un livre (avec curl) :

curl -d "title=Livre 3" -X POST http://localhost:3000/book

Pour modifier un livre en connaissant son ID :

curl -d "title=Nouveau Titre" -X PATCH http://127.0.0.1:3000/book?id=eq.3

Supprimer un livre avec son ID :

curl -X DELETE http://127.0.0.1:3000/book?id=eq.3

Conclusion

PostgREST est une super application pour accéder une base de données avec REST sans développer une application CRUD.

Bien sûr si vous connectez directement une base de données à la vue (HTML avec AJAX ou AngularJS par exemple) toutes les règles métiers devront être dans la base de données avec des procédures stockées et des vues.

Vous pouvez consulter la documentation de l'API

Commentaires