同一查询中的多个端点

Multiple endpoints in same query

它完美地工作,只有一个端点。 使用 apollo-link-rest,我做了一个看起来像这样的客户端

const restLink = new RestLink({ uri: "https://example.com/" })

并使用 new ApolloClient({...})

导出客户端

现在回答问题

在同一台服务器上https://example.com/,有多个端点,所有端点都具有相同的字段,但每个端点中的数据不同

第一个有效的查询如下所示

export const GET_PRODUCTS = gql`
   query firstQuery {
    products @rest(type: "data" path: "first/feed") { // the path could be second/feed and it will work with different data
     id
     title
   }
 }
`

我希望所有这些不同的路径都进入同一个 json 提要,因为它们都有相同的字段,但数据不同

使用别名

您可以(应该可以)使用标准方法进行类似的查询 - 获得许多数据(结果)通常作为相同的形状(节点名称)可用。这是描述here.

{ 
  "1": products(....
  "2": products(....
  ...
}

可以创建路径using variables

可以通过遍历 data 对象轻松组合结果。问题?仅适用于固定数量(不多)的端点,因为不应通过字符串操作生成查询。

多个 graphql 查询

您可以在循环中创建查询 - 参数化 - 使用 Promise.all() 和 apollo-client client.query(。结果也需要合二为一

自定义提取

使用 custom fetch 您可以创建一个采用路径数组的查询。在这种情况下,解析器应该对参数化的 fetch 请求使用 Promise.all()。组合结果可以作为单个节点返回(根据需要)。

不好

所有这些方法都需要进行多次请求。可以通过制作服务器端 REST 包装器 (docs or blog).

来解决问题