gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:05:05 26 4
gpt4 key购买 nike

我正在为 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 突变。

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

最佳答案

您可以使用 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

关于javascript - 如何将 GraphQL 请求字符串解析为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com