¿Qué es una URL de devolución de llamada en relación con una API?

98

He estado buscando en la red y parece que no puedo entender la idea de una URL de devolución de llamada. En mi caso, tengo algunas URL de devolución de llamada que tengo que definir yo mismo. Uno popular es una "URL de devolución de llamada predeterminada". ¿Qué es esto exactamente? ¿Puede dar un ejemplo en inglés sencillo?

ApatíaOso
fuente

Respuestas:

67

Una URL de devolución de llamada será invocada por el método API al que está llamando después de que haya terminado. Así que si llamas

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

Luego, cuando /foofinaliza, envía una solicitud a http://my.server.com/bar. El contenido y el método de esa solicitud variarán; consulte la documentación de la API a la que está accediendo.

Eric Stein
fuente
1
¿Causaría un error si la URL de devolución de llamada no está configurada correctamente?
user3768495
@ user3768495 Esperaría que no, pero eso dependerá de la implementación de la API. En teoría, podría hacer que la devolución de llamada sea parte de una transacción internamente y revertir cualquier cambio realizado por la solicitud original si la devolución de llamada no devuelve una respuesta 2xx.
Eric Stein
¿Necesito enviar una respuesta a la solicitud POST en /api.example.com/foo?
Abhijeet
@Abhijeet Nunca es necesario . Si es apropiado incluir una respuesta, sí, hágalo.
Eric Stein
En una nota separada, ¿dónde creen que deberíamos mantener la URL de devolución de llamada, en el lado del cliente o en el lado del servidor?
Khatri
28

Piense en ello como una carta. A veces, recibe una carta que le pide que complete un formulario y luego devuelva el formulario en un sobre con la dirección previa que se encuentra en el sobre original que contenía el formulario.

Una vez que haya terminado de completar el formulario, póngalo en el sobre de devolución provisto y envíelo de regreso.

La callbackUrl es como ese sobre de devolución. Básicamente estás diciendo que te estoy enviando estos datos. Una vez que haya terminado, estoy en esta callbackUrl esperando su respuesta. Entonces, la API procesará los datos que ha enviado y luego verá la devolución de llamada para enviarle la respuesta.

Esto es útil porque a veces puede llevar años procesar algunos datos y no tiene sentido que la persona que llama espere una respuesta. Por ejemplo, supongamos que su API permite a los usuarios enviarle documentos y escanearlos con virus. Luego envías un informe después. La exploración podría tardar unos 3 minutos. El usuario no puede esperar 3 minutos. Por lo tanto, reconoce que recibió el documento y deja que la persona que llama continúe con otros asuntos mientras realiza el escaneo y luego usa la callbackUrl cuando haya terminado para informarle el resultado del escaneo.

Taf Munyurwa
fuente
12

Si usa la URL de devolución de llamada, la API puede conectarse a la URL de devolución de llamada y enviar o recibir algunos datos. Eso significa que la API puede conectarse con usted más tarde (después de la llamada a la API).

Ejemplo

Diagrama

  1. USTED envía datos mediante solicitud a API
  2. La API envía datos mediante una segunda solicitud a USTED

La definición exacta debe estar en la documentación de la API.

jiwopene
fuente
4

Es un mecanismo para invocar una API de forma asincrónica. La secuencia es la siguiente

  1. su aplicación invoca la URL, pasando como parámetro la URL de devolución de llamada
  2. la api responde con un código http 20x (201 supongo, pero consulte los documentos de la api)
  3. la api funciona según su solicitud durante un cierto período de tiempo
  4. la api invoca su aplicación para darle los resultados, en la dirección URL de devolución de llamada.

Por lo tanto, puede invocar la API y decirle a su usuario que la solicitud se está "procesando" o "adquirida", por ejemplo, y luego actualizar el estado cuando reciba la respuesta de la API.

Espero que tenga sentido. -GRAMO

Giuseppe B
fuente
2

Otro caso de uso podría ser algo como OAuth, es posible que la API no lo llame directamente, sino que el navegador llamará a la URL de devolución de llamada después de completar la autenticación con el proveedor de identidad.

Normalmente, después de que el usuario final ingrese la contraseña del nombre de usuario, el proveedor de servicios de identidad activará una redirección del navegador a su URL de "devolución de llamada" con el código de autorización temporal, por ejemplo

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

Entonces su aplicación podría usar este código de autorización para solicitar un token de acceso con el proveedor de identidad que tiene una vida útil mucho más larga.

Hainan Zhao
fuente