後插入。 是一個獨立的Web服務器, 將任何PostgreSQL數據庫直接轉換為RESTful API。 寫在Haskell, 提供了更清潔,更符合標準的AP。 而結構約束和數據庫權限決定了端點和API操作。
PostgREST文檔將其描述為“手動CRUD編程的替代方法”。 PostgREST是一個開源中間件 並且PostgREST公開的API符合OpenAPI規範(以前稱為Swagger規範)。 根據其文檔,它本機管理數據庫表之間的依賴關係,從而使您可以通過簡單的REST請求從兩個表之間的聯接中檢索數據。
PostgREST將非常快,響應時間不到一秒鐘 在Heroku免費層上每秒最多可處理2000個請求。
該團隊說:“如果您習慣用解釋性語言編寫的服務器,請準備好對PostgREST的性能感到驚喜。”
團隊認為,三個因素會提高速度.
- 首先, 服務器是用Haskell編寫的 使用HTTP Warp服務器(一種編譯語言)。
- 那麼, 將盡可能多的計算委託給數據庫,包括將JSON響應直接序列化為SQL,驗證數據等。
- 最後, 使用Hasql庫維護數據庫連接池(PostgreSQL二進制協議),並且保持無狀態以允許水平縮放。
後插入。 處理身份驗證(通過JSON Web令牌) 並將授權委派給數據庫中定義的角色信息。 這樣可以確保只有一個聲明性的真相來源可以保證安全。
在處理數據庫時, 服務器採用當前已認證用戶的身份 在連接期間,它無法執行用戶自己無法執行的任何操作。 可以在JWT原語中構造其他形式的身份驗證。
另一方面 關於數據完整性,PostgREST 而不是依賴對象關係映射器 (ORM)和自定義命令式編碼, 該系統直接在數據庫上施加聲明性約束。
因此,沒有任何應用程序可以損害您的數據(包括您的API服務器)。 PostgREST為HTTP接口提供了各種備份,以避免出現問題,包括應用PUT請求。 換句話說,不涉及ORM。
新視圖的創建在SQL中具有已知的性能影響。 關於PostgREST的妙處在於,數據庫管理員可以從頭開始創建API,而無需自定義編程。
對於一些, PostgREST還是NoSQL或GraphQL數據庫的有趣替代品 如果需要維護關係模型,則在API中本地公開。 他們感到遺憾的是,這種中間件在大型Linux發行版的軟件包存儲庫中沒有作為標準配置提供。
如何在Linux上安裝PostgREST?
去年6.0.2月發布了XNUMX版,其中添加了新功能並進行了一些更改。 該版本可以從github獲得。
相似地,對於有興趣安裝PostgREST的人, 他們應該知道,現在可以在終結器的幫助下獲得當前版本。 僅在其中輸入:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-linux-x64-static.tar.xz
現在,他們只需要使用以下命令解壓縮該軟件包:
tar Jxf postgrest-v6.0.2-linux-x64-static.tar.xz
在使用64位版本的Ubuntu的特殊情況下:
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntu.tar.xz
tar Jxf postgrest-v6.0.2-ubuntu.tar.xz
或針對使用32位版本的Ubuntu的用戶
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-ubuntui386.tar.xz
tar Jxf postgrest-v6.0.2-ubuntui386.tar.xz
他們可以運行:
./postgrest --help
以相同的方式,準備了一個Docker映像,可以通過輸入以下內容獲得:
碼頭工人拉postgrest / postgrest
最後,您可以從其網站上的文檔中獲取有關其配置的更多信息。 鏈接是這個。