我有一个基于微服务的Ruby+GraphQL
项目,一个使用ember-apollo
的前端。我仍在学习所有这些技术,并且对微服务的概念还很陌生。
我的API中有三个模块-Clients
,Collaborators
和main
(可以看作是其他模块的保护伞),每个模块除外,main
,以及它们自己的graphql
目录,其中包含各自的QueryType
,类型/解析器以及位于这些模块外部的schema
。
由于schema
只能具有一种 query
类型,所以我想到的是以某种方式聚合其他QueryTypes
中的字段this one和FieldCombiner
模块中的main
,作为入口点,并在我的模式中使用该入口点。
此解决方案的问题在于它使用了旧的.define
样式,该样式将在graphql 2.0
中删除,因此我相信class-based-api是更好的解决方案。我搜索了很多,却没有发现在该方向上起作用的东西。
我想在代码中做什么:
module OpenCompanyApi
class Schema < GraphQL::Schema
query Clients::Graphql::Types::Query
query Collaborators::Graphql::Types::Query # Something like that. They're two different modules, each with their own root query type
mutation Clients::Graphql::Types::Mutation
mutation Collaborators::Graphql::Types::Mutation # This too
end
end