Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.
В настоящее время GitHub AE находится в ограниченном выпуске.

Недавно мы перенесли некоторые из документации по REST API. Если вам не удается найти нужный объект, попробуйте использовать новые страницы REST API Branches, Collaborators, Commits, Deploy Keys, Deployments, GitHub Pages, Releases, Metrics, Webhooks.

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

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

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

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

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

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

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

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

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

GitHub AE может отправлять несколько разных заголовков 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 является https://HOSTNAME/api/v3/hub, которая принимает следующие параметры.

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

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

curl -u "user" -i \
  https://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 можно отправлять несколько раз. Если перехватчик уже существует, он будет изменен в соответствии с запросом.