Що таке 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.
Eric Stein

Чи потрібно надсилати відповідь на запит POST за адресою /api.example.com/foo?
Abhijeet

@Abhijeet Вам ніколи не потрібно . Якщо доречно включити відповідь, так, зробіть це.
Eric Stein

Окремо, де ви думаєте, де ми повинні зберігати URL зворотного виклику на стороні клієнта або сервера?
Хатрі

28

Подумайте про це як про лист. Іноді ви отримуєте лист, скажімо, просите заповнити форму, а потім поверніть форму у попередньо адресованому конверті, який знаходиться в оригінальному конверті, в якому містилася форма.

Після того, як ви закінчите заповнення форми, ви поміщаєте її у наданий конверт для повернення та відправляєте назад.

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

Це корисно, оскільки іноді для обробки деяких даних може знадобитися вік, і немає сенсу змушувати абонента чекати відповіді. Наприклад, скажімо, ваш API дозволяє користувачам надсилати на нього документи та сканувати їх на віруси. Потім ви надсилаєте звіт після. Сканування може зайняти приблизно 3 хвилини. Користувач не може чекати 3 хвилини. Отже, ви підтверджуєте, що отримали документ, і дозволяєте абоненту вести інші справи, поки виконуєте сканування, а потім використовуйте callbackUrl, коли закінчите, щоб повідомити їм результат сканування.


12

Якщо ви використовуєте URL зворотного дзвінка, тоді API може підключитися до URL зворотного дзвінка та надіслати або отримати деякі дані. Це означає, що API може зв’язатися з вами пізніше (після виклику API).

Приклад

Діаграма

  1. ВИ відправляєте дані за допомогою запиту до API
  2. API надсилає дані за допомогою другого запиту ВАМ

Точне визначення має бути в документації API.


4

Це механізм виклику API асинхронним способом. Послідовність така

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

Таким чином, ви можете викликати api і повідомити своєму користувачеві, що запит "обробляється" або "придбаний", наприклад, а потім оновити статус, коли отримаєте відповідь від api.

Сподіваюся, це має сенс. -G


2

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

Зазвичай після введення пароля імені користувача кінцевого користувача постачальник послуг ідентифікації запускає переспрямування браузера на вашу URL-адресу "зворотного виклику" з тимчасовим кодом авторизації, наприклад

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

Тоді ваша програма може використовувати цей код авторизації для запиту маркера доступу у постачальника ідентифікаційних даних, який має значно більший термін служби.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.