انتشار PostgREST 9.0.0، افزونه هایی برای تبدیل پایگاه داده به یک API RESTful

PostgREST 9.0.0 منتشر شد، یک وب سرور جداگانه با اجرای یک افزونه سبک وزن به PostgreSQL DBMS، که اشیاء را از یک پایگاه داده موجود به یک API RESTful ترجمه می کند. به جای نگاشت داده های رابطه ای به اشیا (ORM)، PostgREST نماها را مستقیماً در پایگاه داده ایجاد می کند. سمت پایگاه داده همچنین سریال‌سازی پاسخ‌های JSON، اعتبارسنجی داده‌ها و مجوز را مدیریت می‌کند. عملکرد سیستم برای پردازش تا 2000 درخواست در ثانیه در یک سرور معمولی کافی است. کد پروژه به زبان Haskell نوشته شده و تحت مجوز MIT توزیع شده است.

به عنوان مثال، تنها با استفاده از مکانیسم امتیاز پایگاه داده، می توانید از طریق HTTP به داده ها (جدول، انواع مشاهده و رویه های ذخیره شده) دسترسی بدهید. در این حالت نیازی به رمزگذاری چنین ترجمه ای نیست و معمولاً یک دستور GRANT برای در دسترس قرار دادن جدول از طریق REST API کافی است. پیکربندی دسترسی با توکن (JWT) و سازماندهی «چند تداومی» با استفاده از امنیت سطح ردیف پویا (امنیت سطح ردیف) امکان پذیر است.

از نظر معماری، PostgREST به سمت معماری داده گرا (معماری داده گرا) پیش می رود، که در آن میکروسرویس ها خود حالت ها را ذخیره نمی کنند، بلکه از یک دسترسی واحد به داده ها (لایه دسترسی به داده) برای این کار استفاده می کنند.

انتشار PostgREST 9.0.0، افزونه هایی برای تبدیل پایگاه داده به یک API RESTful

از جمله تغییرات نسخه جدید:

  • جداول پارتیشن بندی شده به حافظه پنهان طرحواره ذخیره سازی اضافه شد، که این امکان را برای چنین جداولی فراهم کرد تا عملیات UPSERT و INSERT را در پاسخ موقعیت مکانی جاسازی کنند، کوئری های OPTIONS را اجرا کنند و پشتیبانی OpenAPI را پیاده سازی کنند.
  • از طریق RPC POST امکان فراخوانی توابع با یک پارامتر بی نام وجود دارد.
  • فراخوانی توابع با یک پارامتر JSON بدون هدر "Prefer: params=single-object" مجاز است.
  • با استفاده از درخواست هایی با "Content-Type: application/octet-stream" می توان داده های نوع بایت را در توابع بارگیری کرد.
  • مجاز به بارگیری متن در توابع با استفاده از پرس و جوهایی با "Content-Type: text/plain".
  • برای مثال، "?col=in.("Double\"Quote)، ?col=in.("Back\\Slash")"، پشتیبانی برای فرار از کاراکترها در داخل دو براکت اضافه شده است.
  • توانایی فیلتر کردن منابع سطح اول بر اساس فیلترهای داخلی ("/projects?select=*,clients!inner(*)&clients.id=eq.12" ارائه شده است.
  • عملگر "is" به مقدار "ناشناخته" اجازه می دهد.
  • سازگاری با PostgreSQL 14 به دست آمده است و پشتیبانی از PostgreSQL 9.5 متوقف شده است.

منبع: opennet.ru

اضافه کردن نظر