Che cos'è un URL di richiamata in relazione a un'API?


98

Ho setacciato la rete e non riesco a capire l'idea di un URL di richiamata. Nel mio caso ho alcuni URL di callback che devo definire da solo. Uno popolare è un "URL di richiamata predefinito". Di cosa si tratta esattamente? Puoi fare un esempio in un inglese semplice?

Risposte:


67

Al termine, verrà richiamato un URL di richiamata dal metodo API che stai chiamando. Quindi se chiami

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

Quindi, quando ha /foofinito, invia una richiesta a http://my.server.com/bar. Il contenuto e il metodo di tale richiesta varieranno: controlla la documentazione per l'API a cui stai accedendo.


1
Causerebbe un errore se l'URL di richiamata non è impostato correttamente?
user3768495

@ user3768495 Mi aspetterei di no, ma dipenderà dall'implementazione dell'API. In teoria, potrebbe rendere la richiamata parte di una transazione internamente e annullare le modifiche apportate dalla richiesta originale se la richiamata non restituisce una risposta 2xx.
Eric Stein,

Devo inviare una risposta alla richiesta POST su /api.example.com/foo?
Abhijeet

@Abhijeet Non ne hai mai bisogno . Se è opportuno includere una risposta, sì, fallo.
Eric Stein il

In una nota a parte, dove pensate dovremmo mantenere l'URL di callback, sul lato client o lato server?
Khatri

28

Pensala come una lettera. A volte ricevi una lettera, diciamo che ti chiede di compilare un modulo e poi restituire il modulo in una busta preindirizzata che si trova nella busta originale che ospitava il modulo.

Una volta che hai finito di compilare il modulo, lo metti nella busta di reso fornita e lo rispedisci.

CallbackUrl è come quella busta di ritorno. In pratica stai dicendo che ti sto inviando questi dati. Una volta che hai finito, sono su questo callbackUrl in attesa della tua risposta. Quindi l'API elaborerà i dati che hai inviato, quindi guarderà la richiamata per inviarti la risposta.

Ciò è utile perché a volte possono essere necessari anni per elaborare alcuni dati e non ha senso che il chiamante attenda una risposta. Ad esempio, supponiamo che la tua API consenta agli utenti di inviarle documenti e di eseguirne la scansione antivirus. Quindi invii un rapporto dopo. La scansione potrebbe richiedere circa 3 minuti. L'utente non può attendere 3 minuti. Quindi riconosci di aver ricevuto il documento e lasci che il chiamante si occupi di altre attività mentre esegui la scansione, quindi utilizza callbackUrl al termine per comunicare loro il risultato della scansione.


12

Se utilizzi l'URL di richiamata, l'API può connettersi all'URL di richiamata e inviare o ricevere alcuni dati. Ciò significa che l'API può connettersi a te in un secondo momento (dopo la chiamata API).

Esempio

Diagramma

  1. TU invii i dati utilizzando la richiesta all'API
  2. L'API invia i dati utilizzando la seconda richiesta a TE

La definizione esatta dovrebbe essere nella documentazione API.


4

È un meccanismo per invocare un'API in modo asincrono. La sequenza è la seguente

  1. la tua app richiama l'URL, passando come parametro l'URL di callback
  2. l'api risponde con un codice http 20x (201 immagino, ma fare riferimento ai documenti api)
  3. l'api funziona su tua richiesta per un certo periodo di tempo
  4. l'API richiama la tua app per darti i risultati, all'indirizzo URL di callback.

Quindi puoi invocare l'API e dire al tuo utente che la richiesta è "in elaborazione" o "acquisita", ad esempio, e quindi aggiornare lo stato quando ricevi la risposta dall'API.

Spero abbia un senso. -G


2

Un altro caso d'uso potrebbe essere qualcosa come OAuth, potrebbe non essere chiamato direttamente dall'API, invece l'URL di callback verrà chiamato dal browser dopo aver completato l'autenticazione con il provider di identità.

Normalmente dopo la chiave dell'utente finale nella password del nome utente, il provider di servizi di identità attiverà un reindirizzamento del browser al tuo URL di "richiamata" con il codice di autorizzazione temporaneo, ad es.

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

Quindi la tua applicazione potrebbe utilizzare questo codice di autorizzazione per richiedere un token di accesso con il provider di identità che ha una durata molto più lunga.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.