Что такое URL-адрес обратного вызова по отношению к API?

Я прочесывал сеть и, похоже, не могу понять идею URL-адреса обратного вызова. В моем случае у меня есть несколько URL-адресов обратного вызова, которые я должен определить сам. Популярным является «URL-адрес обратного вызова по умолчанию». Что это такое? Можете ли вы привести пример на простом английском языке?


person ApathyBear    schedule 28.04.2014    source источник


Ответы (6)


URL-адрес обратного вызова будет вызываться методом API, который вы вызываете после его выполнения. Итак, если вы позвоните

POST /api.example.com/foo?callbackURL=http://my.server.com/bar

Затем, когда /foo завершается, он отправляет запрос http://my.server.com/bar. Содержимое и метод этого запроса будут различаться — проверьте документацию API, к которому вы обращаетесь.

person Eric Stein    schedule 28.04.2014
comment
Будет ли это вызывать ошибку, если URL-адрес обратного вызова установлен неправильно? - person user3768495; 05.02.2016
comment
@user3768495 user3768495 Я бы ожидал, что этого не произойдет, но это будет зависеть от реализации API. Теоретически он может сделать обратный вызов частью транзакции внутри и откатить любые изменения, сделанные исходным запросом, если обратный вызов не возвращает ответ 2xx. - person Eric Stein; 05.02.2016
comment
Нужно ли отправлять ответ на запрос POST по адресу /api.example.com/foo? - person Abhijeet; 05.07.2016
comment
@Abhijeet Вам никогда не нужно это делать. Если уместно включить ответ, да, сделайте это. - person Eric Stein; 05.07.2016
comment
Отдельное примечание: где, по вашему мнению, мы должны хранить URL-адрес обратного вызова, на стороне клиента или на стороне сервера? - person Khatri; 29.12.2017
comment
похожий вопрос: https://stackoverflow.com/questions/28391359/what-is-callback-url-in-instagram-api-and-how-to-can-i-implement-it - person Deke; 31.05.2018
comment
Как приложение делает URL-адрес обратного вызова доступным для API, не открывая дыр в безопасности, где любой может получить доступ к этому URL-адресу обратного вызова? не будет ли API аутентифицирован? - person Emil; 11.07.2021

Думайте об этом как о письме. Иногда вы получаете письмо, скажем, с просьбой заполнить форму, а затем вернуть форму в конверте с предварительно адресованным адресом, который находится в исходном конверте, в котором была форма.

После того, как вы закончите заполнение формы, вы кладете ее в предоставленный конверт для возврата и отправляете обратно.

CallbackUrl похож на обратный конверт. Вы в основном говорите, что я посылаю вам эти данные. Как только вы закончите с этим, я буду ждать вашего ответа по этому callbackUrl. Таким образом, API обработает отправленные вами данные, а затем просмотрит обратный вызов, чтобы отправить вам ответ.

Это полезно, потому что иногда обработка некоторых данных может занять целую вечность, и нет смысла заставлять вызывающую сторону ждать ответа. Например, предположим, что ваш API позволяет пользователям отправлять в него документы и проверять их на наличие вирусов. Затем вы отправляете отчет после. Сканирование может занять около 3 минут. Пользователь не может ждать 3 минуты. Таким образом, вы подтверждаете, что получили документ, и позволяете вызывающему абоненту заниматься другими делами, пока вы выполняете сканирование, а затем используете callbackUrl, когда закончите, чтобы сообщить ему результат сканирования.

person Taf Munyurwa    schedule 31.01.2019

Если вы используете URL-адрес обратного вызова, API может подключиться к URL-адресу обратного вызова и отправить или получить некоторые данные. Это означает, что API может подключиться к вам позже (после вызова API).

Пример

Диаграмма

  1. ВЫ отправляете данные, используя запрос к API
  2. API отправляет данные с помощью второго запроса ВАМ

Точное определение должно быть в документации API.

person jiwopene    schedule 30.01.2019

Это механизм асинхронного вызова API. Последовательность следующая

  1. ваше приложение вызывает URL-адрес, передавая в качестве параметра URL-адрес обратного вызова
  2. API отвечает 20-кратным http-кодом (я думаю, 201, но обратитесь к документации API)
  3. API работает по вашему запросу определенное время
  4. API вызывает ваше приложение, чтобы предоставить вам результаты по адресу URL-адреса обратного вызова.

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

Надеюсь, это имеет смысл. -ГРАММ

person Giuseppe B    schedule 31.01.2019

Я сделаю это довольно просто для вас. Когда транзакция инициируется, она проходит стадию обработки, пока не достигнет конечной стадии. Как только он достигает конечной стадии, платежный шлюз отправляет статус транзакции на URL-адрес обратного вызова, который обычно продавцы используют в качестве ссылки, чтобы показать пользователю страницу успеха/неудачи. Надеюсь это поможет?

person Swagat sahoo    schedule 09.09.2020

Другим вариантом использования может быть что-то вроде OAuth, он может не вызываться API напрямую, вместо этого URL-адрес обратного вызова будет вызываться браузером после завершения аутентификации с помощью поставщика удостоверений.

Обычно после того, как конечный пользователь вводит пароль имени пользователя, поставщик услуг идентификации инициирует перенаправление браузера на ваш URL-адрес «обратного вызова» с временным кодом авторизации, например.

https://example.com/callback?code=AUTHORIZATION_CODE

Затем ваше приложение может использовать этот код авторизации для запроса маркера доступа у поставщика удостоверений, который имеет гораздо более длительный срок службы.

person Hainan Zhao    schedule 31.01.2019