经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
我为什么要做开源项目 -- illuminant
来源:cnblogs  作者:wang_yb  时间:2021/1/18 16:29:11  对本文有异议

在做 illuminant 这个开源项目之前, 一直在寻找一种能够满足以下要求的Web接口开发方式:

  1. 能够避免编写各种繁琐的业务接口
  2. 能够避免编写业务接口的测试代码
  3. 业务变化时, 能够方便的调整数据库(不用为了兼容之前的接口而各种hack, 弄的数据库字段乱七八槽)
  4. 尽量避免写各种数据库查询SQL
  5. 有基本的认证和权限
  6. 方便扩展, 对接其他服务

上面虽然列出了6个需求, 但是核心的诉求总结起来就一个: 自动生成API
这样, 只要专注于设计数据库结构, 业务变化时, 改动数据库就可以生成新的API, 自动生成的API也可以避免大量的API测试代码.

自动生成API的框架也有不少, 但是 **灵活性(高) **和 **复杂度(低) **都能满足要求的却很难找到.
直到遇到graphql 风格的API, 第一次接触的时候我有一种在请求中写SQL的感觉 ??

graphql 虽然主要在前端使用, 但我感觉它对后端开发人员的冲击更大, 只有经过没日没夜开发和修改一堆RESTFul API的开发才能体会到它的好处.
它除了减少了大量接口代码的开发和测试, 更重要的是减少了前后端之间的交流沟通(这才是影响开发效率的根源).
前后端开发人员理解的目标一致了, 都是数据库结构. (之前是后端理解数据库结构, 前端理解 API 结构)

近几年, graphql 的相关库井喷式产生, 各种主流语言的库非常多, 也证明了这种开发方式的优势.
于是乎, 我就像用现有的 Web 框架, 对接一个成熟的开源 graphql 服务, 从而能够大量减少API接口的编写.

刚开始用的是 graphile , 后来是 prisma , 最后是现在使用的 hasura

  • graphile 产生的比较早, 是强依赖 postgresql 数据库的, 有很多地方考虑不周, 后来通过各种插件来弥补的.
  • prisma 非常好用, 通过定义 yaml 格式的数据结构, 就可以自动生成数据库和接口, 但是 v2 版本, 变成了一个功能强大的 ORM框架, 不再提供 graphql API出来.
  • hasura 是目前 illuminant 项目中使用的 graphql 服务

hasura 本身就是一个完整的解决方案, 包含了认证, 权限等等, 完全可以直接使用它作为后端.
关键是它有后端管理界面, 创建和维护数据变得非常简单.

但是, 之所以不直接使用 hasura , 而是基于 hasura 封装出 illuminant 这个项目, 是因为:

  1. 不想重度依赖 hasura, 希望 hasura 成为可以替换的一部分, 而不是全部
  2. 完全使用 hasura, 就不能使用自己喜欢的语言去扩展
  3. 业务 API 使用 graphql, 还有其他需求不一定用 graphql

项目文档: https://www.yuque.com/quyuan-w1et4/awzlgk

原文链接:http://www.cnblogs.com/wang_yb/p/14277304.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号