注意:这是一个大大简化的例子,但问题是一样的。
我正在尝试/blog-posts
使用 GraphQL 接口包装现有的 HTTP 服务。仅当我传入查询参数时,服务才会在其响应中返回一些额外的数据extra-data=true
。所以,
GET /blog-posts
: 获取 ID 和标题GET /blog-posts?extra-data=true
: 获取 ID、标题和extra-data
字段
我有一个类似于以下的苦艾酒模式:
query do
field :blog_posts, non_null(list_of(non_null(:blog_post)))
resolve &MyAppWeb.Resolvers.Blog.posts/3
end
object :blog_post do
field :id, non_null(:id)
field :title, non_null(:string)
field :extra_data, :string,
resolve: &MyAppWeb.Resolvers.Blog.post_extra_data/3
end
我的问题是我不知道如何实现extra_data
解析器,这样它就不会/blog-posts?extra-data=true
在已经调用/blog-posts
. 有一个中间件https://hexdocs.pm/absinthe/Absinthe.Middleware.Batch.html旨在帮助解决类似的问题,N+1 查询,但我不知道如何在我的情况下应用它。
有什么建议么?