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.