Sua lógica continua sua
O Fóir não hospeda o seu código. Você escreve uma função, a hospeda em qualquer lugar que sirva HTTP e registra a URL dela como uma operação, e o Fóir a chama, faz novas tentativas quando elas podem ajudar e guarda um registro de cada execução.
Um contrato HTTP
Uma chamada a uma operação é um HTTP POST com um corpo JSON, então qualquer linguagem que sirva HTTP e verifique um token assinado serve. Os helpers de SDK publicados são em JavaScript e TypeScript. Em outra linguagem, você mesmo implementa a requisição e a verificação do token. O endpoint precisa ser roteável publicamente, e endereços de loopback, privados e de metadados de nuvem são recusados ao salvar e de novo no momento da chamada. Para trabalho local, foir operations dev encaminha as chamadas do projeto para a sua máquina sem expô-la.
O token que cada chamada carrega
Toda chamada carrega um token assinado e de curta duração no cabeçalho X-Foir-Token e restrito àquele único despacho. Sua função o verifica com as chaves publicadas do Fóir. Ele carrega exatamente as capacidades que a operação declarou, como ler os registros de um modelo ou escrever os de outro. Sua função não guarda nenhuma chave de API. Ela constrói o cliente a partir do token e chama o Fóir como a operação.
Lendo segredos
O mesmo token permite que sua função leia, no projeto, os segredos. Ela busca um com getSecret quando precisa, e nada é substituído na requisição que o Fóir envia. A exceção é uma operação com template, em que o Fóir chama uma API de terceiros por conta própria e nenhum código seu roda. Nesse caso o Fóir preenche o segredo na requisição de saída a partir do cofre.
Novas tentativas e o registro da execução
Uma falha que outra tentativa poderia resolver, como um endpoint inacessível ou um erro de servidor, tem novas tentativas, três por padrão. Um erro de cliente ou uma recusa não tem. Uma execução que esgota suas novas tentativas vai para uma dead-letter queue, onde você pode inspecioná-la, tentar de novo ou descartá-la. Cada execução é guardada com seu status, duração, resultado ou erro, gatilho e contagem de novas tentativas. O mesmo payload pode chegar mais de uma vez, então escreva o handler para ser idempotente.
Leia os detalhes
O guia de operações cobre o contrato de requisição e de token, gatilhos, modos síncrono e assíncrono, novas tentativas e o registro de execução.