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.