从基于 GraphQL 的 API 中使用 GET 获取 JSON 不可能吗?
Fetching JSON with GET from GraphQL-based API not possible?
我正在尝试查询 RCSB GraphQL API 以获得有关蛋白质结构的信息。我这样做是作为自动化脚本的一部分。以前我使用他们的搜索 API,但是他们在 12 月退休了。通常使用 httr 总是对我有用,但我觉得在这种情况下我遗漏了一些东西。
他们在其网站 (https://data.rcsb.org/#rest-api) 上建议的第一个示例如下:
https://data.rcsb.org/graphql?query={entry(entry_id:"4HHB"){exptl{method}}}
在浏览器中,我可以很容易地获得所需的信息 (https://data.rcsb.org/graphql?query=%7Bentry(entry_id:%224HHB%22)%7Bexptl%7Bmethod%7D%7D%7D),但是当我尝试从 R 执行此操作时,我收到客户端错误 400 Bad Request。
library(httr)
query <- 'query={entry(entry_id:"4HHB"){exptl{method}}}'
r <- GET(modify_url("https://data.rcsb.org/graphql", query = query))
http_status(r)
$category
[1] "Client error"
$reason
[1] "Bad Request"
$message
[1] "Client error: (400) Bad Request"
我也尝试了很多不同的东西,但我无法让它以某种方式工作。我对此比较陌生,所以也许有人可以发现一个明显的错误。能得到一些帮助真是太好了!
查询需要URL编码
library(httr)
query <- URLencode('query={entry(entry_id:"4HHB"){exptl{method}}}')
r <- GET(modify_url("https://data.rcsb.org/graphql", query = query))
http_status(r)
#> $category
#> [1] "Success"
#>
#> $reason
#> [1] "OK"
#>
#> $message
#> [1] "Success: (200) OK"
我正在尝试查询 RCSB GraphQL API 以获得有关蛋白质结构的信息。我这样做是作为自动化脚本的一部分。以前我使用他们的搜索 API,但是他们在 12 月退休了。通常使用 httr 总是对我有用,但我觉得在这种情况下我遗漏了一些东西。
他们在其网站 (https://data.rcsb.org/#rest-api) 上建议的第一个示例如下:
https://data.rcsb.org/graphql?query={entry(entry_id:"4HHB"){exptl{method}}}
在浏览器中,我可以很容易地获得所需的信息 (https://data.rcsb.org/graphql?query=%7Bentry(entry_id:%224HHB%22)%7Bexptl%7Bmethod%7D%7D%7D),但是当我尝试从 R 执行此操作时,我收到客户端错误 400 Bad Request。
library(httr)
query <- 'query={entry(entry_id:"4HHB"){exptl{method}}}'
r <- GET(modify_url("https://data.rcsb.org/graphql", query = query))
http_status(r)
$category
[1] "Client error"
$reason
[1] "Bad Request"
$message
[1] "Client error: (400) Bad Request"
我也尝试了很多不同的东西,但我无法让它以某种方式工作。我对此比较陌生,所以也许有人可以发现一个明显的错误。能得到一些帮助真是太好了!
查询需要URL编码
library(httr)
query <- URLencode('query={entry(entry_id:"4HHB"){exptl{method}}}')
r <- GET(modify_url("https://data.rcsb.org/graphql", query = query))
http_status(r)
#> $category
#> [1] "Success"
#>
#> $reason
#> [1] "OK"
#>
#> $message
#> [1] "Success: (200) OK"