Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.
GitHub AE is currently under limited release.

Сведения об API GitHub

Сведения об API GitHub, которые позволяют расширить и изменить взаимодействие с GitHub.

Сведения об APIGitHub

GitHub предоставляет два API: REST API и API GraphQL. Вы можете взаимодействовать с обоими API с помощью GitHub 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 привлекательным для разработчиков мобильных приложений.

Например, чтобы получить имя входа GitHub AE для десяти ваших подписчиков и имя входа десяти подписчиков каждого из ваших подписчиков, можно отправить один запрос, например:

{
  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
    }
  }
}