Qu'est-ce qu'une URL de rappel par rapport à une API?

98

J'ai parcouru le net et je n'arrive pas à comprendre l'idée d'une URL de rappel. Dans mon cas, j'ai quelques URL de rappel que je dois définir moi-même. Une "URL de rappel par défaut" est la plus courante. Qu'est-ce que c'est exactement? Pouvez-vous donner un exemple en anglais simple?

Apathie
la source

Réponses:

67

Une URL de rappel sera invoquée par la méthode API que vous appelez une fois l'opération terminée. Alors si tu appelles

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

Ensuite, lorsque /fooc'est terminé, il envoie une demande à http://my.server.com/bar. Le contenu et la méthode de cette demande vont varier - consultez la documentation de l'API à laquelle vous accédez.

Eric Stein
la source
1
Cela provoquerait-il une erreur si l'URL de rappel n'est pas définie correctement?
user3768495
@ user3768495 Je m'attendrais à ce que ce ne soit pas le cas, mais cela dépendra de la mise en œuvre de l'API. Il pourrait, en théorie, faire partie du rappel d'une transaction en interne et annuler toutes les modifications apportées par la demande d'origine si le rappel ne renvoie pas de réponse 2xx.
Eric Stein
Dois-je envoyer une réponse à la requête POST sur /api.example.com/foo?
Abhijeet
@Abhijeet Vous n'en avez jamais besoin . S'il est approprié d'inclure une réponse, oui, faites-le.
Eric Stein
Sur une note distincte, où pensez-vous que nous devrions conserver l'URL de rappel, côté client ou côté serveur?
Khatri
28

Pensez-y comme une lettre. Parfois, vous recevez une lettre, disons vous demander de remplir un formulaire, puis de retourner le formulaire dans une enveloppe pré-adressée qui se trouve dans l'enveloppe d'origine qui abritait le formulaire.

Une fois que vous avez terminé de remplir le formulaire, vous le mettez dans l'enveloppe de retour fournie et vous le renvoyez.

La callbackUrl est comme cette enveloppe de retour. Vous dites essentiellement que je vous envoie ces données. Une fois que vous en avez terminé, je suis sur cette callbackUrl en attente de votre réponse. Ainsi, l'API traitera les données que vous avez envoyées puis examinera le rappel pour vous envoyer la réponse.

Ceci est utile car parfois, le traitement de certaines données peut prendre des années et cela n'a aucun sens de demander à l'appelant d'attendre une réponse. Par exemple, supposons que votre API permette aux utilisateurs de lui envoyer des documents et de les scanner. Ensuite, vous envoyez un rapport après. L'analyse peut prendre 3 minutes environ. L'utilisateur ne peut pas attendre 3 minutes. Donc, vous reconnaissez que vous avez obtenu le document et laissez l'appelant continuer avec d'autres affaires pendant que vous effectuez l'analyse, puis utilisez callbackUrl une fois terminé pour lui indiquer le résultat de l'analyse.

Taf Munyurwa
la source
12

Si vous utilisez l'URL de rappel, l'API peut se connecter à l'URL de rappel et envoyer ou recevoir des données. Cela signifie que l'API peut se connecter à vous plus tard (après l'appel d'API).

Exemple

Diagramme

  1. VOUS envoyez des données en utilisant une requête à l' API
  2. API envoie des données à l' aide de la deuxième demande de vous

La définition exacte doit être dans la documentation de l'API.

jiwopène
la source
5

C'est un mécanisme pour appeler une API de manière asynchrone. La séquence est la suivante

  1. votre application appelle l'url, en passant comme paramètre l'url de rappel
  2. l'api répond avec un code http 20x (201 je suppose, mais reportez-vous à la documentation de l'api)
  3. l'API fonctionne sur votre demande pendant un certain temps
  4. l'API appelle votre application pour vous donner les résultats, à l'adresse URL de rappel.

Ainsi, vous pouvez appeler l'API et indiquer à votre utilisateur que la demande est en cours de «traitement» ou «acquise» par exemple, puis mettre à jour le statut lorsque vous recevez la réponse de l'API.

J'espère que cela a du sens. -G

Giuseppe B
la source
2

Un autre cas d'utilisation pourrait être quelque chose comme OAuth, il peut ne pas être appelé directement par l'API, mais l'URL de rappel sera appelée par le navigateur après avoir terminé l'authentification avec le fournisseur d'identité.

Normalement, après que l'utilisateur final ait entré le mot de passe du nom d'utilisateur, le fournisseur de services d'identité déclenchera une redirection du navigateur vers votre URL de «rappel» avec le code d'authentification temporaire, par exemple

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

Ensuite, votre application pourrait utiliser ce code d'autorisation pour demander un jeton d'accès au fournisseur d'identité qui a une durée de vie beaucoup plus longue.

Hainan Zhao
la source