Prochaine révision | Révision précédente |
informatique:api-rest:postgrest [2025/01/06 14:43] – créée - modification externe 127.0.0.1 | informatique:api-rest:postgrest [2025/07/30 13:39] (Version actuelle) – [Pour aller plus loin, jointures…] bertrand |
---|
docker run --name tutorial -p 5433:5432 \ | docker run --name tutorial -p 5433:5432 \ |
-e POSTGRES_PASSWORD=mysecretpassword \ | -e POSTGRES_PASSWORD=mysecretpassword \ |
-d postgres:13-alpine | -d postgres:17-alpine |
</code> | </code> |
| |
Cela va faire tourner une instance docker et exposer le port 5433 sur l'hôte depuis lequel on pourra accéder au serveur PostgreSQL. | Cela va faire tourner une instance docker et exposer le port 5433 sur l'hôte depuis lequel on pourra accéder au serveur PostgreSQL. |
| |
<note tip>Si vous avez des données géographiques, il faut PostGIS… remplacer en fin de ligne de commande ci-dessus //postgres// par //postgis/postgis:12-3.0-alpine// ou //postgis/postgis:13-3.1-alpine//, cf. [[https://hub.docker.com/r/postgis/postgis/tags?page=1&ordering=last_updated|page postgis sur dockerhub]]\\ | <note tip>Si vous avez des données géographiques, il faut PostGIS… remplacer en fin de ligne de commande ci-dessus //postgres// par //postgis/postgis:13-3.5-alpine// ou //postgis/postgis:17-3.5-alpine// les version 14, 15, 16 existent aussi, cf. [[https://hub.docker.com/r/postgis/postgis/tags?page=1&ordering=last_updated|page postgis sur dockerhub]]\\ |
On peut préférer aussi l'image //postgres:13-alpine// au lieu de la //postgres//, cette dernière est basée sur debian | On peut préférer aussi l'image //postgres:17-alpine// au lieu de la //postgres//, cette dernière est basée sur debian |
</note> | </note> |
<note important>Si vous coupez/redémarrez votre PC, il faudra redémarrer le conteneur : <code bash>docker container start tutorial</code></note> | <note important>Si vous coupez/redémarrez votre PC, il faudra redémarrer le conteneur : <code bash>docker container start tutorial</code></note> |
</code> | </code> |
| |
<note tip>Pour tester les requêtes on peut utiliser [[https://curl.se|curl]], et éventuellement faire un pipe sur //json query// (jq) pour que soit bien plus lisible le JSON retourné.\\ Il y a aussi l'utilitaire [[https://insomnia.rest/download|Insomnia]], et également Postman qui pousse plutôt la solution web, mais propose également un [[https://learning.postman.com/docs/getting-started/installation-and-updates/#installing-postman-on-linux|client lourd]], malheureusement, ni l'un ni l'autre ne sont libres ou Open Source !</note> | <note tip>Pour tester les requêtes on peut utiliser [[https://curl.se|curl]], et éventuellement faire un pipe sur //json query// (jq) pour que soit bien plus lisible le JSON retourné.\\ Il y a aussi l'utilitaire [[https://www.usebruno.com/|bruno]], [[https://insomnia.rest/download|Insomnia]], et également Postman qui pousse plutôt la solution web, mais propose également un [[https://learning.postman.com/docs/getting-started/installation-and-updates/#installing-postman-on-linux|client lourd]], la [[https://github.com/usebruno/bruno|version gratuite de Bruno]] est Open Source !</note> |
===== Utilisateur autorisé en écriture ===== | ===== Utilisateur autorisé en écriture ===== |
| |
<note tip>Si on crée le serveur postgREST via un conteneur Docker, au lieu de ce fichier, on précise ce mot de passe via la clé //PGRST_JWT_SECRET// dans le docker-compose.yaml</note> | <note tip>Si on crée le serveur postgREST via un conteneur Docker, au lieu de ce fichier, on précise ce mot de passe via la clé //PGRST_JWT_SECRET// dans le docker-compose.yaml</note> |
==== Création du jeton JSON Web Token (JWT) ==== | ==== Création du jeton JSON Web Token (JWT) ==== |
Plus d'informations sur les [[wpfr>JWT]]\\ | Plus d'informations sur les [[wpfr>JSON_Web_Token]]\\ |
Rendez-vous sur [[https://jwt.io/#debugger-io|jwt.io]] puis suivez-les instructions comme sur le schéma:\\ | Le tutoriel de [[https://grafikart.fr/tutoriels/json-web-token-presentation-958|grafikart]]\\ |
{{https://postgrest.org/en/v7.0.0/_images/tut1-jwt-io.png}} | Tutoriel avec une petit code JS/Node pour créer un JWT : https://www.geeksforgeeks.org/json-web-token-jwt/\\ |
| ou via un script sh : https://postgrest.org/en/stable/tutorials/tut1.html#step-3-sign-a-token |
| |
À quelques adaptations près : | À quelques adaptations près : |
| |
===== Pour aller plus loin, jointures… ===== | ===== Pour aller plus loin, jointures… ===== |
[[:informatique:api-rest:postgrest-jointure-postgis|Jointure et insertion de lieux avec coordonnées géographique (geometry)]] | * [[:informatique:api-rest:postgrest-jointure-postgis|Jointure et insertion de lieux avec coordonnées géographique (geometry)]] |
| * [[https://postgis.net/documentation/tips/tip-move-postgis-schema/]] pbm //type "geometry" does not exist// lié à l’extention postgis/schéma //public//. |
| |