在作 illuminant 這個開源項目以前, 一直在尋找一種可以知足如下要求的Web接口開發方式:前端
上面雖然列出了6個需求, 可是核心的訴求總結起來就一個: 自動生成API
這樣, 只要專一於設計數據庫結構, 業務變化時, 改動數據庫就能夠生成新的API, 自動生成的API也能夠避免大量的API測試代碼.sql
自動生成API的框架也有很多, 可是 **靈活性(高) **和 **複雜度(低) **都能知足要求的卻很難找到.
直到遇到graphql 風格的API, 第一次接觸的時候我有一種在請求中寫SQL的感受 😃數據庫
graphql 雖然主要在前端使用, 但我感受它對後端開發人員的衝擊更大, 只有通過沒日沒夜開發和修改一堆RESTFul API的開發才能體會到它的好處.
它除了減小了大量接口代碼的開發和測試, 更重要的是減小了先後端之間的交流溝通(這纔是影響開發效率的根源).
先後端開發人員理解的目標一致了, 都是數據庫結構. (以前是後端理解數據庫結構, 前端理解 API 結構)後端
近幾年, graphql 的相關庫井噴式產生, 各類主流語言的庫很是多, 也證實了這種開發方式的優點.
因而乎, 我就像用現有的 Web 框架, 對接一個成熟的開源 graphql 服務, 從而可以大量減小API接口的編寫.數據結構
剛開始用的是 graphile , 後來是 prisma , 最後是如今使用的 hasura框架
hasura 自己就是一個完整的解決方案, 包含了認證, 權限等等, 徹底能夠直接使用它做爲後端.
關鍵是它有後端管理界面, 建立和維護數據變得很是簡單.post
可是, 之因此不直接使用 hasura , 而是基於 hasura 封裝出 illuminant 這個項目, 是由於:測試