javascript - 如何字符串化嵌套对象以使用 queryParams 发出 graphql/GET 请求?
问题描述
我需要从我的节点服务器向 graphQL API 发出请求。我使用的 graphQL APIquery
将 URL 的查询参数作为 URL 的查询参数,而不是在请求的正文中。它也不接受 POST 请求。我在字符串化类似的东西时遇到问题
const query = {
student(id: studentId) {
personal {
address
grade
etc {morestuff}
}
}
}
如何将其字符串化以将其作为 queryParams 发送?我已经尝试过该querystring
模块querystring(query)
,但它返回类似的东西student=
,就是这样。我试过 JSON.stringify 也没有成功。我需要上面的,看起来像:
query=%7B%0A%20%20%20%20student(id%3A%20studentId)%20%7B%0A%20%20%20%20%20%20personal%20%7B%0A%20%20%20%20%20%20%20%20address%0A%20%20%20%20%20%20%20%20grade%0A%20%20%20%20%20%20%20%20etc%20%7Bmorestuff%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D
(我为此使用了在线编码器/解码器!)
我知道那里有 GraphQL 客户端库,但我不确定它们是否要用于服务器到服务器,我看到它们是从浏览器/客户端使用的。如果我应该使用客户端库,您能否推荐一个支持 GET 请求的(最好是轻量级的)(我尝试的最后一个没有 - 它被称为 Prisma)
任何帮助表示赞赏:)
解决方案
这对我有用,创建了一个函数:
function encode(query) {
return encodeURIComponent(query).replace(/'/g, "%27").replace(/"/g, "%22");
}
并通过:
const query = {
student(id: studentId) {
personal {
address
grade
etc {morestuff}
}
}
}
返回想要的结果。希望这可以帮助某人。
推荐阅读
- html - 单击时链接不执行任何操作
- android - 尝试调用方法“applyForce”
- oauth - Square OAuth 访问令牌应该何时更新?
- jquery - 在 html 表中上传之前无法预览图像
- javascript - Node.js:在没有返回记录的 SQL 查询中:TypeError:无法读取未定义的属性
- java - 无法使用 XPath 识别页面上的所有文本元素
- laravel - laravel 刀片 - 如何隐藏特定路线的 html 元素的显示
- reactjs - 从循环中反应渲染
- reactjs - 如何安装 npm 依赖项以使用 VSTS 构建 reactjs 应用程序?
- javascript - 添加内容后如何阻止li标签下台?