Sortie de PostgREST 9.0.0, modules complémentaires pour transformer la base de données en API RESTful

PostgREST 9.0.0 a été publié, un serveur Web fonctionnant séparément avec la mise en œuvre d'un module complémentaire léger au SGBD PostgreSQL, traduisant les objets d'une base de données existante en une API RESTful. Au lieu de mapper les données relationnelles dans des objets (ORM), PostgREST crée des vues directement dans la base de données. Le côté base de données gère également la sérialisation des réponses JSON, la validation des données et l'autorisation. Les performances du système sont suffisantes pour traiter jusqu'à 2000 XNUMX requêtes par seconde sur un serveur typique. Le code du projet est écrit en Haskell et distribué sous licence MIT.

Par exemple, en utilisant uniquement le mécanisme de privilèges de base de données, vous pouvez accorder l'accès aux données (tables, types de vues et procédures stockées) via HTTP. Dans ce cas, il n'est pas nécessaire d'encoder une telle traduction et généralement une seule commande GRANT suffit pour rendre la table disponible via l'API REST. Il est possible de configurer l'accès par token (JWT) et d'organiser du « multitenancy » grâce à l'utilisation d'une sécurité dynamique au niveau des lignes (Row Level Security).

Sur le plan architectural, PostgREST pousse vers une architecture orientée données (Data-Oriented Architecture), dans laquelle les microservices ne sauvegardent pas eux-mêmes les états, mais utilisent pour cela un accès unique aux données (Data Access Layer).

Sortie de PostgREST 9.0.0, modules complémentaires pour transformer la base de données en API RESTful

Parmi les changements de la nouvelle version :

  • Des tables partitionnées ont été ajoutées au cache du schéma de stockage, ce qui a permis à ces tables d'intégrer des opérations UPSERT et INSERT dans la réponse Location, d'exécuter des requêtes OPTIONS et d'implémenter la prise en charge d'OpenAPI.
  • Via RPC POST, il est permis d'appeler des fonctions avec un paramètre sans nom.
  • Il est permis d'appeler des fonctions avec un paramètre JSON sans l'en-tête « Prefer : params=single-object ».
  • Il est permis de charger des données de type bytea dans des fonctions en utilisant des requêtes avec « Content-Type : application/octet-stream ».
  • Autorisé à charger du texte dans des fonctions à l'aide de requêtes avec "Content-Type : text/plain".
  • Ajout de la prise en charge des caractères d'échappement entre doubles crochets, par exemple "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • La possibilité de filtrer les ressources de premier niveau en fonction de filtres intégrés (« /projects?select=*,clients!inner(*)&clients.id=eq.12 ») a été fournie.
  • L'opérateur "is" autorise la valeur "inconnu".
  • La compatibilité avec PostgreSQL 14 a été atteinte et la prise en charge de PostgreSQL 9.5 a été interrompue.

Source: opennet.ru

Ajouter un commentaire