在作 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 这个项目, 是由于:测试