egg
egg copied to clipboard
关于 egg-graphql 结构的疑问
关于 egg-graphql 的结构问题
egg-graphql 将每个 graphql 模型分为 schema.graphql、resolver.js、connector.js 三个文件。按照规定做了一段时间。发现原先的 service 被架空了。如果要写 service,那么直接从 resolver.js 调用 service 好了,connector.js 就没必要存在。
另外访问 this.ctx.connector.xxxXxxx 下划线文件夹到驼峰式没有转换,只能 this.ctx.connector.xxx_xxx 访问,这算 bug 么。
我的理解是,既然用了 GraphQL,就可以抛弃 RESTful API 思维了,Controller-Service 这个架构是 RESTful API 时代的设计,如果我们用了 GraphQL,那就应该只对外暴露一个 /graphql API,然后里面使用 Resolver-Model-Connector 架构。参考 Apollo GraphQL 的架构设计。
原本的 service(包括 rpc、别的服务的 RESTful API 等)如果已经有实现一些功能,可以作为 resolver 的数据来源之一,后面可以不一定接 Model-Connector。