#r #get #graphql #httr
#r #получить #graphql #httr
Вопрос:
Я пытаюсь запросить RCSB GraphQL API, чтобы получить информацию о структурах белка. Я делаю это как часть автоматизированного скрипта. Ранее я использовал их Search API, который, однако, они закрывают в декабре. Обычно использование 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={entry(entry_id:»4HHB»){exptl{method}}}), однако, когда я пытаюсь сделать это из 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"
Я также пробовал много разных вещей, но я не могу заставить это как-то работать. Я относительно новичок в этом, поэтому, возможно, кто-то может заметить явную ошибку. Было бы здорово получить некоторую помощь!
Ответ №1:
Запрос должен быть закодирован в 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"
Комментарии:
1. Отлично, что работает. Большое спасибо! Я пробовал это раньше, но, должно быть, в коде была другая ошибка.