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


98

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

Ответы:


67

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

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

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


1
Вызовет ли это ошибку, если URL-адрес обратного вызова установлен неправильно?
user3768495 05

@ user3768495 Я ожидал, что этого не произойдет, но это будет зависеть от реализации API. Теоретически он может сделать обратный вызов частью транзакции внутренне и откатить любые изменения, внесенные в исходный запрос, если обратный вызов не вернет ответ 2xx.
Эрик Штайн

Нужно ли мне отправлять ответ на запрос POST по адресу /api.example.com/foo?
Abhijeet

@Abhijeet Тебе и не нужно . Если уместно включить ответ, да, сделайте это.
Eric Stein

Отдельно отметим, где, по вашему мнению, мы должны хранить URL-адрес обратного вызова, на стороне клиента или на стороне сервера?
Khatri

29

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

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

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

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


13

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

пример

Диаграмма

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

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


5

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

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

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

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


2

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

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

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

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.