1
0
mirror of synced 2026-01-28 00:02:29 -05:00
Files
docs/translations/ru-RU/content/developers/overview/about-githubs-apis.md
2022-12-13 17:09:01 +00:00

5.9 KiB
Raw Blame History

title, intro, redirect_from, versions, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
title intro redirect_from versions topics ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
Сведения об API GitHub Сведения об API {% data variables.product.prodname_dotcom %}, которые позволяют расширить и изменить взаимодействие с {% data variables.product.prodname_dotcom %}.
/v3/versions
/articles/getting-started-with-the-api
/github/extending-github/getting-started-with-the-api
fpt ghes ghae ghec
* * * *
API
8b2f1c35e7dba7b31943b3fbb34aad1885bdd540 d697e0ea10 MT ru-RU 10/20/2022 148098903

Об API-интерфейсах %% данных variables.product.company_short %}

{% данных variables.product.company_short %} предоставляет два API: REST API и API GraphQL. Вы можете взаимодействовать с обоими API с помощью {% данных variables.product.prodname_cli %}, curl, официальных библиотек Octokit и сторонних библиотек. Иногда функция может поддерживаться в одном API, но не в другом.

Следует использовать API, который лучше всего соответствует вашим потребностям и что вы наиболее удобно использовать. Вам не нужно использовать только один API поверх другого. Идентификаторы узлов позволяют перемещаться между REST API и API GraphQL. Дополнительные сведения см. в разделе "Использование идентификаторов глобальных узлов".

В этой статье рассматриваются преимущества каждого API. Дополнительные сведения об API GraphQL см. в разделе "Сведения об API GraphQL". Дополнительные сведения о REST API см. в документации по REST.

Выбор API GraphQL

API GraphQL возвращает именно запрашиваемые данные. GraphQL также возвращает данные в предварительно известной структуре на основе запроса. В отличие от этого, REST API возвращает больше данных, чем запрошено, и возвращает их в предварительно определенной структуре. Вы также можете выполнить эквивалент нескольких запросов REST API в одном запросе GraphQL. Возможность сделать меньше запросов и получить меньше данных делает GraphQL привлекательным для разработчиков мобильных приложений.

Например, чтобы получить {% данных variables.product.product_name %} имя входа десяти подписчиков и имя входа десяти подписчиков каждого из ваших подписчиков, можно отправить один запрос, например:

{
  viewer {
    followers(first: 10) {
      nodes {
        login
        followers(first: 10) {
          nodes {
            login
          }
        }
      }
    }
  }
}

Ответ будет объектом JSON, который соответствует структуре запроса.

В отличие от этого, чтобы получить эти же сведения из REST API, необходимо сначала выполнить запрос.GET /user/followers API возвратит имя входа каждого подписчика, а также другие данные о подписчиках, которые вам не нужны. Затем для каждого подписчика необходимо отправить запрос.GET /users/{username}/followers В общей сложности вам потребуется выполнить 11 запросов, чтобы получить те же сведения, которые можно получить из одного запроса GraphQL, и вы получите лишние данные.

Выбор REST API

Так как интерфейсы REST API существуют дольше, чем API GraphQL, некоторые разработчики более комфортно работают с REST API. Так как ИНТЕРФЕЙСы REST API используют стандартные http-команды и понятия, многие разработчики уже знакомы с основными понятиями для использования REST API.

Например, чтобы создать проблему в репозитории octocat/Spoon-Knife , необходимо отправить запрос POST /repos/octocat/Spoon-Knife/issues в текст запроса JSON:

{
  "title": "Bug with feature X",
  "body": "If you do A, then B happens"
}

В отличие от этого, чтобы устранить проблему с помощью API GraphQL, необходимо получить идентификатор octocat/Spoon-Knife узла репозитория, а затем отправить запрос следующим образом:

mutation {
  createIssue(
    input: {
      repositoryId: "MDEwOlJlcG9zaXRvcnkxMzAwMTky"
      title: "Bug with feature X"
      body: "If you do A, then B happens"}
  ) {
    issue {
      number
      url
    }
  }
}