La tua logica resta tua

Fóir non ospita il tuo codice. Scrivi una funzione, la ospiti dove vuoi purché serva HTTP e registri il suo URL come operazione, e Fóir la chiama, la riprova quando un nuovo tentativo può servire e tiene traccia di ogni esecuzione.

Un contratto HTTP

Una chiamata a una operazione è un HTTP POST con un body JSON, quindi va bene qualsiasi linguaggio che sappia servire HTTP e verificare un token firmato. Gli helper SDK pubblicati sono per JavaScript e TypeScript. In un altro linguaggio implementi tu la richiesta e la verifica del token. L'endpoint deve essere raggiungibile pubblicamente, e gli indirizzi loopback, privati e dei metadati cloud vengono rifiutati al salvataggio e di nuovo al momento della chiamata. Per il lavoro in locale, foir operations dev inoltra alla tua macchina le chiamate del progetto senza esporla.

Il token che ogni chiamata porta con sé

Ogni chiamata porta nell'header X-Foir-Token un token firmato e di breve durata, limitato a quella singola chiamata. La tua funzione lo verifica rispetto alle chiavi pubblicate di Fóir. Porta esattamente le capacità che l'operazione ha dichiarato, come leggere i record di un modello o scrivere quelli di un altro. La tua funzione non ha nessuna chiave API. Costruisce il proprio client dal token e chiama Fóir come l'operazione.

Lettura dei secret

Lo stesso token permette alla tua funzione di leggere, per il progetto, i secret. Ne recupera uno con getSecret quando serve, e nella richiesta che Fóir invia non viene sostituito nulla. L'eccezione è un'operazione basata su template, dove Fóir chiama da sé una API di terze parti e non viene eseguito codice tuo. Lì Fóir inserisce il secret nella richiesta in uscita dal vault.

Retry e registro delle esecuzioni

Un fallimento che un altro tentativo potrebbe risolvere, come un endpoint irraggiungibile o un errore del server, viene riprovato, tre volte per impostazione predefinita. Un errore del client o un rifiuto no. Un'esecuzione che esaurisce i retry va in una dead-letter queue, dove puoi ispezionarla, riprovarla o scartarla. Ogni esecuzione viene salvata con stato, durata, risultato o errore, trigger e numero di retry. Lo stesso payload può arrivare più di una volta, quindi scrivi il gestore in modo che sia idempotente.

Approfondisci

La guida alle operazioni tratta il contratto di richiesta e token, i trigger, le modalità sincrona e asincrona, i retry e il registro delle esecuzioni.