Python - 如何从 GraphQL api 获取 JSON?

Posted

技术标签:

【中文标题】Python - 如何从 GraphQL api 获取 JSON?【英文标题】:Python - how to get JSON from a GraphQL api? 【发布时间】:2021-12-26 02:50:15 【问题描述】:

我正在尝试创建一个简单的 Python 脚本,它应该只查询 GraphQL api 并从中检索 JSON 数据。我的代码的问题是我不断收到 html 响应,而我需要获取 JSON 数据。

如果我从here 执行 GraphQL api,页面将收到 JSON 响应(我也可以从 Chrome devtools 中看到它),但如果我在 Python 代码中执行相同操作,我将收到 html 响应:

import requests
import json
import time

query = 'query': 'saleAuctions(allowedAddresses: ["0xdc65d63cdf7b03b95762706bac1b8ee0af130e8b", "0x0000000000000000000000000000000000000000"]) id'
r = requests.get('https://graph.defikingdoms.com/subgraphs/name/defikingdoms/apiv5', params=query)

print(r.headers['content-type'])

回复:text/html

我尝试将查询作为 POST 请求负载发送,但输出是相同的。我如何也可以从我的 Python 脚本中检索 JSON 数据?提前致谢!

【问题讨论】:

【参考方案1】:

您必须发送带有 json 正文的 POST 请求。

import requests
import json
import time

query = json.dumps('query': 'saleAuctions(allowedAddresses: ["0xdc65d63cdf7b03b95762706bac1b8ee0af130e8b", "0x0000000000000000000000000000000000000000"]) id')
r = requests.post('https://graph.defikingdoms.com/subgraphs/name/defikingdoms/apiv5', data=query)

print(r.headers['content-type'])

【讨论】:

哇,这成功了!非常感谢穆萨!

以上是关于Python - 如何从 GraphQL api 获取 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

Webonyx/Graphql-php 入门:如何在 cURL 中获取 API 的响应而不会从 API 实现中获得回声?

Python GraphQL API 调用组合

Python GraphQL API 调用组合

GitHub 的 GraphQL API 如何从 Java 中使用?

如何从 Nuxt 前端访问经过身份验证的 GraphQL API

如何从 Node.js/Express 服务器调用 GraphQL API?