Можно ли получить ответ GraphQL без иерархического беспорядка?Python

Программы на Python
Anonymous
Можно ли получить ответ GraphQL без иерархического беспорядка?

Сообщение Anonymous »

Я пытаюсь выполнить несколько запросов GraphQL к API GitHub.
Например, следующий запрос вернет содержимое файла README.md репозитория:

Код: Выделить всё

query GetReadmeMD($owner: String!, $repo: String!) {
repository(owner: $owner, name: $repo) {
object(expression: "HEAD:README.md") {
... on Blob {
text
}
}
}
}
Или, скорее, он вернет объект JSON, который в глубине содержит README:

Код: Выделить всё

{
"data": {
"repository": {
"object": {
"text": "# My project's README [...]"
}
}
}
}
Есть ли какой-нибудь способ пропустить весь иерархический беспорядок и просто получить то, что меня действительно интересует (желательно с помощью необработанного POST, но использование библиотек Python также допустимо), вот так :

Код: Выделить всё

{
"text": "# My project's README [...]"
}
Решение должно позволять указывать несколько различных «интересующих значений».
Лучшее, что мне удалось до сих пор, это:
Лучшее, что мне удалось на данный момент:
p>
  • использовать псевдонимы с известным префиксом, чтобы «пометить» все значения, представляющие интерес в моем запросе
  • пройтись по выходным данным и «собрать» все значения с этим префиксом (в Python)
Изменив приведенный выше запрос, чтобы он также собирал количество открытых PR, и добавив префикс к обоим значениям интерес с FOO_:

Код: Выделить всё

query GetReadmeMD($owner: String!, $repo: String!) {
repository(owner: $owner, name: $repo) {
pullRequests(states: OPEN) {
FOO_n_open_prs: totalCount
}
object(expression: "HEAD:README.md") {
... on Blob {
FOO_readme: text
}
}
}
}
Затем я могу проанализировать выходные данные и сохранить только ключи с этим префиксом (при этом сам префикс будет удален):

Код: Выделить всё

{
"n_open_prs": 42,
"readme": "# My project's README [...]"
}
Однако это решение кажется неуклюжим и неуклюжим... Мне интересно, не знаю ли я чего-то базового о графе QL (вполне вероятно, поскольку я начал изучать его на этой неделе), или я изобретаю худшую версию колеса.


Подробнее здесь: https://stackoverflow.com/questions/783 ... al-clutter

Вернуться в «Python»