Was ist eine Rückruf-URL in Bezug auf eine API?

98

Ich habe das Netz durchsucht und kann mich anscheinend nicht mit der Idee einer Rückruf-URL befassen. In meinem Fall habe ich einige Rückruf-URLs, die ich selbst definieren muss. Eine beliebte ist eine "Standard-Rückruf-URL". Was ist das genau? Können Sie ein Beispiel in einfachem Englisch geben?

ApathyBear
quelle

Antworten:

67

Eine Rückruf-URL wird von der API-Methode aufgerufen, die Sie aufrufen, nachdem sie abgeschlossen ist. Also, wenn Sie anrufen

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

Wenn /fooes fertig ist, sendet es eine Anfrage an http://my.server.com/bar. Der Inhalt und die Methode dieser Anforderung variieren. Überprüfen Sie die Dokumentation der API, auf die Sie zugreifen.

Eric Stein
quelle
Würde es einen Fehler verursachen, wenn die Rückruf-URL nicht richtig eingestellt ist?
user3768495
@ user3768495 Ich würde erwarten, dass dies nicht der Fall ist, aber das hängt von der Implementierung der API ab. Theoretisch könnte der Rückruf intern Teil einer Transaktion sein und alle durch die ursprüngliche Anforderung vorgenommenen Änderungen rückgängig machen, wenn der Rückruf keine 2xx-Antwort zurückgibt.
Eric Stein
Muss ich eine Antwort auf die POST-Anfrage unter /api.example.com/foo senden?
Abhijeet
@Abhijeet Sie nie brauchen zu. Wenn es angebracht ist, eine Antwort aufzunehmen, ja, tun Sie dies.
Eric Stein
Wo sollte man die Rückruf-URL auf Client- oder Serverseite aufbewahren?
Khatri
28

Betrachten Sie es als einen Brief. Manchmal erhalten Sie einen Brief, in dem Sie aufgefordert werden, ein Formular auszufüllen, und das Formular dann in einem voradressierten Umschlag zurücksenden, der sich in dem Originalumschlag befindet, in dem sich das Formular befand.

Sobald Sie das Formular ausgefüllt haben, legen Sie es in den bereitgestellten Rückumschlag und senden es zurück.

Das callbackUrl ist wie dieser Rückumschlag. Sie sagen im Grunde, ich sende Ihnen diese Daten. Sobald Sie damit fertig sind, warte ich in diesem CallbackUrl auf Ihre Antwort. Die API verarbeitet also die von Ihnen gesendeten Daten und überprüft dann den Rückruf, um Ihnen die Antwort zu senden.

Dies ist nützlich, da es manchmal ewig dauern kann, einige Daten zu verarbeiten, und es keinen Sinn macht, den Anrufer auf eine Antwort warten zu lassen. Angenommen, Ihre API ermöglicht es Benutzern, Dokumente an sie zu senden und sie mit Viren zu scannen. Dann senden Sie einen Bericht nach. Der Scan kann 3 Minuten dauern. Der Benutzer kann nicht 3 Minuten warten. Sie bestätigen also, dass Sie das Dokument erhalten haben, und lassen den Anrufer während des Scans mit anderen Geschäften fortfahren. Wenn Sie fertig sind, verwenden Sie die callbackUrl, um das Ergebnis des Scans mitzuteilen.

Taf Munyurwa
quelle
12

Wenn Sie die Rückruf-URL verwenden, kann die API eine Verbindung zur Rückruf-URL herstellen und einige Daten senden oder empfangen. Das bedeutet, dass die API später (nach dem API-Aufruf) eine Verbindung zu Ihnen herstellen kann.

Beispiel

Diagramm

  1. SIE senden Daten per Anfrage an die API
  2. Die API sendet Daten mithilfe einer zweiten Anforderung an SIE

Die genaue Definition sollte in der API-Dokumentation enthalten sein.

Jiwopene
quelle
4

Es ist ein Mechanismus, um eine API auf asynchrone Weise aufzurufen. Die Reihenfolge ist die folgende

  1. Ihre App ruft die URL auf und übergibt als Parameter die Rückruf-URL
  2. Die API antwortet mit einem 20x http-Code (201, denke ich, aber siehe API-Dokumente)
  3. Die API bearbeitet Ihre Anfrage für eine bestimmte Zeit
  4. Die API ruft Ihre App auf, um die Ergebnisse unter der Rückruf-URL-Adresse anzuzeigen.

So können Sie die API aufrufen und Ihrem Benutzer mitteilen, dass die Anforderung beispielsweise "verarbeitet" oder "erfasst" wird, und dann den Status aktualisieren, wenn Sie die Antwort von der API erhalten.

Hoffe es macht Sinn. -G

Giuseppe B.
quelle
2

Ein anderer Anwendungsfall könnte OAuth sein. Er wird möglicherweise nicht direkt von der API aufgerufen. Stattdessen wird die Rückruf-URL vom Browser aufgerufen, nachdem die Authentifizierung mit dem Identitätsanbieter abgeschlossen wurde.

Normalerweise löst der Identitätsdienstanbieter nach Eingabe des Benutzernamenkennworts durch den Endbenutzer eine Browserumleitung zu Ihrer "Rückruf" -URL mit dem temporären Autorisierungscode aus, z

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

Dann könnte Ihre Anwendung diesen Autorisierungscode verwenden, um beim Zugriffsanbieter ein Zugriffstoken anzufordern, das eine viel längere Lebensdauer hat.

Hainan.Z
quelle