Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.
После обновления экземпляра Enterprise Server администратором сайта до Enterprise Server 3.9 или более поздней версии REST API будет обновлен. Сведения о том, как найти версию экземпляра, см. в разделе Сведения о версиях документации GitHub. Дополнительные сведения см. в разделе Сведения об управлении версиями API.

Веб-перехватчики репозитория

Используйте REST API для создания веб-перехватчиков для репозиториев и управления ими.

Сведения о веб-перехватчиках репозитория

Веб-перехватчики репозитория позволяют получать полезные данные HTTP-запроса POST всякий раз, когда в репозитории происходят определенные события. REST API можно использовать для управления веб-перехватчиками репозитория, организации и приложения. Вы можете перечислить доставку веб-перехватчиков для веб-перехватчика или получить и повторно получить отдельную доставку для веб-перехватчика, которую можно интегрировать во внешнее приложение или службу. Вы также можете использовать REST API для изменения конфигурации веб-перехватчика. Например, можно изменить URL-адрес полезных данных, тип контента, проверку SSL и секрет. Дополнительные сведения см. в разделе:

Если вы хотите настроить один веб-перехватчик для получения событий из всех репозиториев вашей организации, ознакомьтесь с нашей документацией по REST API для веб-перехватчиков организации.

Помимо REST API, GitHub также может служить центром PubSubHubbub для репозиториев.

Получение веб-перехватчиков

Для отправки полезных данных веб-перехватчика из GitHub Enterprise Server требуется доступ к серверу через Интернет. Также настоятельно рекомендуется использовать SSL для передачи зашифрованных полезных данных по протоколу HTTPS.

Заголовки веб-перехватчиков

GitHub Enterprise Server может отправлять несколько разных заголовков HTTP, которые позволяют различать типы событий и идентификаторы полезных данных. Дополнительные сведения см. разделе Заголовки веб-перехватчика.

PubSubHubbub

GitHub также может служить центром PubSubHubbub для всех репозиториев. PSHB — это простой протокол публикации и подписки, который позволяет серверам регистрироваться для получения обновлений при обновлении раздела. Обновления отправляются с HTTP-запросом POST на URL-адрес обратного вызова. URL-адреса разделов для отправок GitHub репозитория представлены в следующем формате:

https://github.com/{owner}/{repo}/events/{event}

Событие может быть любым доступным событием веб-перехватчика. Дополнительные сведения см. в разделе События и полезные данные веб-перехватчика.

Формат ответа

Формат по умолчанию — это то, что должны ожидать существующие перехватчики после получения: текста JSON, отправленного в качестве параметра payload в POST. Можно также указать получение необработанного текста JSON с заголовком Accept или расширением .json.

Accept: application/json
https://github.com/{owner}/{repo}/events/push.json

URL-адреса обратных вызовов

URL-адреса обратного вызова могут использовать протокол HTTP.

# Send updates to a PostBin bin
https://www.toptal.com/developers/postbin/123

Подписка

Конечной точкой GitHub PubSubHubbub является http(s)://HOSTNAME/api/v3/hub, которая принимает следующие параметры.

ИмяТипОбязательноОписание
hub.modestringsubscribe или unsubscribe.
hub.topicstringУниверсальный код ресурса (URI) репозитория GitHub для подписки. Этот путь должен иметь следующий формат: /{owner}/{repo}/events/{event}.
hub.callbackstringУниверсальный код ресурса (URI) для получения обновлений раздела.
hub.secretstringОбщий секретный ключ, который создает хэш-подпись исходящего содержимого текста. Вы можете убедиться, что отправка поступила из GitHub, сравнивая необработанный текст запроса с содержимым заголовков X-Hub-Signature или X-Hub-Signature-256. Дополнительные сведения см. в документации по PubSubHubbub.

Пример запроса с curl выглядит следующим образом:

curl -u "user" -i \
  http(s)://HOSTNAME/api/v3/hub \
  -F "hub.mode=subscribe" \
  -F "hub.topic=https://github.com/{owner}/{repo}/events/push" \
  -F "hub.callback=https://www.toptal.com/developers/postbin/123"

Запросы PubSubHubbub можно отправлять несколько раз. Если перехватчик уже существует, он будет изменен в соответствии с запросом.