SQLer:無需編程語言即可將 SQL 查詢轉換為 RESTful API 的工具

收藏待读

SQLer:無需編程語言即可將 SQL 查詢轉換為 RESTful API 的工具

SQLer 是一個微型 http 服務器,用 Go 語言編寫,將舊的 CGI 概念應用於 SQL 查詢。SQLer 允許編寫端點並分配一個 SQL 查詢,以便任何人點擊它時能執行查詢。此外 SQLer 還允許自定義驗證規則,可驗證請求正文或查詢參數。SQLer 使用 nginx 樣式配置語言(HCL)。

SQLer 功能

  • 無需依賴,可獨立使用;
  • 支持多種數據可類型,包括:SQL Server, MYSQL, SQLITE, PostgreSQL, Cockroachdb 等;
  • 內置 RESTful 服務器;
  • 內置 RESP Redis 協議,可以使用任何 redis 客戶端連接到 SQLer;
  • 內置 Javascript 解釋器,可輕鬆轉換結果;
  • 內置驗證器;
  • 自動使用預備語句;
  • 使用(HCL)配置語言;
  • 可基於 unix glob 模式加載多個配置文件;
  • 每條 SQL 查詢可被命名為宏;
  • 在每個宏內可使用 Go text/template
  • 每個宏都有自己的 Context(查詢參數 + 正文參數)作為 .Input (map [string] interface{}),而 .Utils 是輔助函數列表,目前它只包含 SQLEscape;
  • 可自定義授權程序,授權程序只是一個簡單的 webhook,sqler 使用這個 webhook 驗證是否應該完成某請求。

下載

配置概況

複製代碼

// create a macro/endpoint called "_boot",
// this macro is private "used within other macros"
// because it starts with "_".
// this rule only used within `RESTful` context.
_boot{
// the query we want to execute
exec= 
  

支持的 SQL 引擎

  • sqlite3
  • mysql
  • postgresql
  • cockroachdb
  • sqlserver

支持的 Util

  • .Hash – 使用指定的方法 [md5,sha1,sha256,sha512,bcrypt] 散列指定的輸入, {{ "data" | .Hash "md5" }}
  • ·.UnixTime – 以秒為單位返回 unit 時間, {{ .UnixTime }}
  • .UnixNanoTime – 以納秒為單位返回 unix 時間, {{ .UnixNanoTime }}
  • .Uniqid – 返回唯一 ID, {{ .Uniqid }}

協議

SQLer 遵循 Apache 2.0 協議。

原文 : InfoQ

相關閱讀

免责声明:本文内容来源于InfoQ,已注明原文出处和链接,文章观点不代表立场,如若侵犯到您的权益,或涉不实谣言,敬请向我们提出检举。