如何将GraphQL请求字符串解析为对象

尼克·拉姆斯伯顿

我正在为GraphQL运行Apollo lambda服务器。我想从POST请求主体中截获GraphQL查询/变异并对其进行解析,以便可以找出请求所要求的查询/变异。环境是Node.js。

该请求不是JSON,而是GraphQL查询语言。我四处张望,试图找到一种方法将其解析为可以导航的对象,但我正在绘制空白。

Apollo服务器必须以某种方式解析它以定向请求。有谁知道将要执行此操作的库或有关如何解析请求的指针?请求正文的示例以及我想在下面检索的内容。

{"query":"{\n  qQueryEndpoint {\n    id\n  }\n}","variables":null,"operationName":null}

我想确定这是一个查询,qQueryEndpoint并且正在询问。

{"query":"mutation {\\n  saveSomething {\\n    id\\n  }\\n}","variables":null}

我想确定这是一个突变并且saveSomething正在使用突变。

我的第一个想法是删除换行符,并尝试使用正则表达式来解析请求,但这似乎是一种非常脆弱的解决方案。

加布里埃尔·布鲁(Gabriel Blue)

您可以使用graphql-tag

const gql = require('graphql-tag');

const query = `
  {
    qQueryEndpoint {
      id
    }
  }
`;

const obj = gql`
  ${query}
`;

console.log('operation', obj.definitions[0].operation);
console.log('name', obj.definitions[0].selectionSet.selections[0].name.value);

打印输出:

operation query
name qQueryEndpoint

随着你的突变:

operation mutation
name saveSomething

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章