Webhook и API (определение и различия) - PullRequest
1 голос
/ 04 марта 2020

Я хочу знать о webhook (что такое webhook). Что такое применение webhook (сценарий реального мира). Кроме того, каковы различия между webhook и API?

1 Ответ

1 голос
/ 04 марта 2020

API - это стандартизированный способ связи со службой. Вы отметили REST в своем вопросе, поэтому я сосредоточусь на API RESTful, использующих HTTP, но важно знать, что API - это очень общий термин c.

В мире REST все является ресурс, и вы используете методы HTTP, чтобы определить, какое действие вы хотите предпринять или применить к этому ресурсу. Например, чтобы получить список всех пользователей на GitHub, вы должны отправить запрос GET на https://api.github.com/users. URL (в частности, часть /users) определяет интересующий вас ресурс. Здесь ресурс представляет собой совокупность всех пользователей. Есть и другие методы, которые вы можете использовать; например PUT для создания или обновления ресурса. Чтобы узнать больше о различных методах, вы можете прочитать спецификацию HTTP .

Webhooks часто используются вместе с API, но они ориентированы на события. Они позволяют службе отправлять «уведомления», когда происходит событие или выполняется какое-либо условие.

GitHub снова является хорошим примером того, для чего используются веб-хуки. Скажем, я создаю сервис, который отправляет электронное письмо каждый раз, когда кто-то оставляет комментарий по проблеме в GitHub. Я мог бы использовать GitHub API (как выше), чтобы перечислить все комментарии по проблеме, а затем проверить, были ли какие-либо новые комментарии со времени последней проверки. Затем я могу просто повторять этот запрос каждые несколько секунд. Это известно как опрос . Проблема здесь в том, что большую часть времени я проверяю результат, который не изменится. Это будет пустой тратой ресурсов. Webooks позволяет Событийное программирование . Вместо случайной проверки я могу указать GitHub отправлять моей службе HTTP-запрос каждый раз, когда добавляется комментарий: он же webhook. В этой архитектуре мне нужно отправлять запрос в API GitHub только тогда, когда я точно знаю, что был оставлен новый комментарий.

В целом, вы не можете реально сравнивать API и webhooks. Связь между ними проста: веб-хуки отправляют запросы в API.

...