Graphql 有没有办法将片段传递给graphiql?

Graphql 有没有办法将片段传递给graphiql?,graphql,apollo-server,graphiql,Graphql,Apollo Server,Graphiql,可以传递查询,但显然不是片段: server.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql', query: `# Welcome to GraphiQL query PostsForAuthor { author(id: 1) { firstName posts { title votes } } }`})); 2017年12月10日更新 可以使用

可以传递查询,但显然不是片段:

server.use('/graphiql', graphiqlExpress({
    endpointURL: '/graphql',
    query: `# Welcome to GraphiQL

query PostsForAuthor {
  author(id: 1) {
    firstName
    posts {
      title
      votes
    }
  }
}`}));

2017年12月10日更新 可以使用Apollo的客户端发送片段和查询:

然而,这并不能解决原来的问题;我想在启动时将片段传递给graphiql服务器实例。

正如您所注意到的(和详细说明的),graphiql采用了一个
查询
参数:

查询:作为初始显示查询使用的可选GraphQL字符串,如果提供了undefined,则将使用存储查询或defaultQuery

如果把一个片段作为参数的值放进去不起作用,那么我认为没有任何方法可以从片段开始。。。但你真的为什么要这么做?片段本身是不可执行的,整个想法是用一个(可执行的)查询启动GraphiQL

如果您希望能够复制/粘贴查询中经常使用的某些文本,则使用bookmarklet可能是一个更好的主意。

启动是指从服务器启动?如果是这样的话,我不相信碎片就是这样被使用的。我的理解如下:

  • 在服务器上提供类型(如
    User
  • 在客户机上,使用查询和片段查询这些类型
  • 例如,如果在服务器上提供type
    User
    ,则在客户端图形ql上,可以使用片段查询该类型:

    graphQL(客户端)
    其思想是用片段预先填充GraphQL,以便在以后的查询中使用,没有那么多要立即执行的内容。然而,我似乎在阿波罗服务器的当前文档中找不到这一点。我的问题是:如果是查询,为什么不是一个片段?这两者是相互关联的,所以两者都允许似乎是合乎逻辑的。我明白你的意思。因此,在服务器中可以指定查询和变异,但不能指定片段,因为:在服务器中可以指定客户端可以使用的查询,而在客户端,可以使用两种格式自由编写这些查询:查询和片段。也许你会说,“我想重复使用这个特定的查询,不想每次都重写它,所以我会将它变成一个片段并使用它”-服务器不关心它是一个查询还是片段,因为它已经完成了指定可以查询什么(而不是如何查询)的工作。查询也不是一成不变的。片段不会影响可能查询的文档。一个人没有义务仅仅因为片段存在就使用它。当你说“片段存在”时,你的意思是在服务器上吗?我的意思是在传递给graphiql(不是graphql)并显示在左窗格中的初始查询字符串中。
    fragment authorData on AuthorType{
      firstName
      posts {
        title
        votes
      }
    }
    
    query PostsForAuthor {
      author(id: 1) {
        ...authorData
      }
    }