O que é um URL de retorno de chamada em relação a uma API?


98

Tenho vasculhado a rede e não consigo entender a ideia de um URL de retorno de chamada. No meu caso, tenho alguns URLs de retorno de chamada que preciso definir. Um popular é um "URL de retorno de chamada padrão". O que é isso exatamente? Você pode dar um exemplo em inglês simples?

Respostas:


67

Um URL de retorno de chamada será invocado pelo método API que você está chamando depois de concluído. Então se você ligar

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

Então, quando /footerminar, ele envia uma solicitação para http://my.server.com/bar. O conteúdo e o método dessa solicitação irão variar - verifique a documentação da API que você está acessando.


1
Isso causaria um erro se o URL de retorno de chamada não fosse definido corretamente?
user3768495

@ user3768495 Eu esperava que não, mas isso vai depender da implementação da API. Isso poderia, em teoria, tornar o retorno de chamada parte de uma transação internamente e reverter quaisquer alterações feitas pela solicitação original se o retorno de chamada não retornar uma resposta 2xx.
Eric Stein

Preciso enviar uma resposta à solicitação POST em /api.example.com/foo?
Abhijeet

@Abhijeet Você nunca precisa . Se for apropriado incluir uma resposta, sim, faça-o.
Eric Stein

Em nota separada, onde vocês acham que devemos manter o url de retorno de chamada, no lado do cliente ou no lado do servidor?
Khatri

28

Pense nisso como uma carta. Às vezes, você recebe uma carta pedindo para preencher um formulário e, em seguida, devolvê-lo em um envelope pré-endereçado que está no envelope original que continha o formulário.

Assim que terminar de preencher o formulário, coloque-o no envelope de devolução fornecido e envie-o de volta.

O callbackUrl é como aquele envelope de retorno. Basicamente, você está dizendo que estou enviando esses dados. Assim que terminar, estou neste callbackUrl à espera da sua resposta. Portanto, a API processará os dados que você enviou e, em seguida, consulte o retorno de chamada para enviar a resposta.

Isso é útil porque às vezes pode demorar muito para processar alguns dados e não faz sentido deixar o chamador aguardar uma resposta. Por exemplo, digamos que sua API permite que os usuários enviem documentos para ela e façam uma varredura de vírus. Então você envia um relatório depois. A varredura pode levar cerca de 3 minutos. O usuário não pode ficar esperando por 3 minutos. Portanto, você reconhece que recebeu o documento e permite que o chamador prossiga com outros negócios enquanto você faz a varredura e, em seguida, usa callbackUrl quando terminar para informar o resultado da varredura.


12

Se você usar o URL de retorno de chamada, a API pode se conectar ao URL de retorno de chamada e enviar ou receber alguns dados. Isso significa que a API pode se conectar a você mais tarde (após a chamada da API).

Exemplo

Diagrama

  1. VOCÊ envia dados usando solicitação para API
  2. API envia dados usando uma segunda solicitação para VOCÊ

A definição exata deve estar na documentação da API.


4

É um mecanismo para invocar uma API de forma assíncrona. A sequência é a seguinte

  1. seu aplicativo invoca o url, passando como parâmetro o url de retorno de chamada
  2. a api responde com um código HTTP 20x (201 eu acho, mas consulte os documentos da API)
  3. a API trabalha em sua solicitação por um determinado período de tempo
  4. a API invoca seu aplicativo para fornecer os resultados, no endereço de url de retorno de chamada.

Assim, você pode invocar a api e informar ao usuário que a solicitação está "em processamento" ou "adquirida", por exemplo, e atualizar o status ao receber a resposta da api.

Espero que faça sentido. -G


2

Outro caso de uso poderia ser algo como OAuth, ele não pode ser chamado pela API diretamente, em vez disso, a URL de retorno de chamada será chamada pelo navegador após concluir a autenticação com o provedor de identidade.

Normalmente, após o usuário final inserir a senha do nome de usuário, o provedor de serviços de identidade acionará um redirecionamento do navegador para o seu url de "retorno de chamada" com o código de autorização temporário, por exemplo

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

Em seguida, seu aplicativo pode usar este código de autorização para solicitar um token de acesso com o provedor de identidade que tem uma vida útil muito mais longa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.