DocumentationIntégrations
Disponible à partir du plan Builder

Fonctions backend

Ce que sont les fonctions qui tournent sur le serveur, quand votre app en a besoin, et que faire quand votre plan n’inclut pas cette fonctionnalité.

Coût en crédits : les étapes qui demandent à l’IA de construire consomment des crédits.

L’app générée par Fabapp tourne dans le navigateur des personnes qui l’utilisent. Presque tout y trouve sa place : écrans, données, connexion, IA, intégrations du catalogue. Certaines tâches, en revanche, ne peuvent pas tourner dans le navigateur, et c’est pour elles qu’existe la fonction backend.

Ce que c’est

Une fonction backend est un morceau de code qui tourne sur le serveur, en dehors de l’app affichée à l’écran. C’est l’IA qui l’écrit, quand la demande l’exige : elle crée le fichier functions/<nom>.ts et enregistre la fonction dans fab.functions.json. Les écrans de l’app appellent la fonction par son nom, attendent la réponse et affichent le résultat.

Vous n’avez rien à écrire. Les fichiers sont visibles dans l’onglet Code, dans le dossier functions.

Quand vous en avez besoin

Trois situations, et dans toutes la réponse est une fonction backend :

  • une API ou un flux externe bloqué dans le navigateur. Beaucoup de sites n’autorisent pas le navigateur à lire leurs données directement depuis une autre adresse (ce verrou s’appelle CORS). C’est le cas typique des flux RSS des portails d’information. Le serveur n’a pas ce verrou : la fonction récupère le contenu et le remet à l’app ;
  • une clé secrète. Tout ce qui est dans l’app peut être lu par quiconque ouvre l’app. Une clé d’API d’un service payant ne doit jamais s’y trouver. Dans la fonction, elle reste sur le serveur. Pour conserver la clé, utilisez le sous-onglet APIs externes, dans l’onglet Intégrations : il enregistre l’API et l’identifiant, et la fonction les utilise par leur nom ;
  • un calcul ou une règle auquel l’app doit pouvoir se fier. Si la règle tourne dans le navigateur, la personne peut la modifier. Exemples : appliquer une remise, réserver une place « seulement si elle est encore libre », valider quelque chose avant d’écrire.

Pour lire et écrire les données de l’app elle-même, utiliser l’IA ou les intégrations du catalogue, aucune fonction n’est nécessaire : l’app le fait déjà sans elle.

Plan

Les fonctions backend sont une fonctionnalité du plan Builder. Dans les plans Free et Starter :

  • l’assistant indique que la demande nécessite du code sur le serveur et que cela dépend du plan, et propose une alternative ou le changement de plan ;
  • si une nouvelle fonction est écrite malgré tout, la plateforme la retire de l’app au build, car elle serait refusée à chaque appel.

Ce que l’assistant ne doit jamais promettre, c’est une « route » de l’app elle-même, comme /api/rss : l’app n’a pas de serveur propre, et cette adresse n’existe pas.

Qui peut appeler la fonction

Chaque fonction déclare qui peut l’utiliser :

  • n’importe quel visiteur, sans connexion (par exemple, un formulaire de contact sur une page publique) ;
  • seulement les personnes connectées à l’app (le comportement par défaut, quand rien n’est déclaré) ;
  • seulement les personnes qui ont un rôle, comme administrateur.

Précisez dans la demande qui doit pouvoir l’utiliser. À l’intérieur de la fonction, le code a accès à toutes les données de l’app, sans les règles d’accès : c’est pourquoi le contrôle de qui appelle est important.

Coût

  • écrire la fonction est un travail de l’IA et consomme des crédits d’IA, comme toute construction ;
  • chaque appel compte comme une requête de l’app ;
  • si la fonction utilise l’IA, envoie une notification ou appelle une intégration, cet usage consomme des crédits d’intégration, comme il le ferait en dehors d’elle.

Sans le Builder : les alternatives

Si vous ne voulez pas changer de plan maintenant, vous pouvez résoudre les mêmes problèmes avec un intermédiaire à vous, en dehors de Fabapp.

Un flux à vous sur n8n, Make ou Pipedream

C’est l’alternative recommandée. Sur ces services, vous montez un flux qui commence par un webhook (une adresse qui reçoit l’appel), fait le travail du serveur et renvoie le résultat.

  1. sur le service, créez un flux avec un déclencheur webhook ;
  2. dans le flux, récupérez le flux RSS ou appelez l’API. S’il y a une clé secrète, elle reste conservée dans le service, jamais dans l’app ;
  3. faites répondre le flux avec les données, en JSON ;
  4. configurez la réponse pour accepter les appels venant de l’adresse de votre app (l’option CORS ou origines autorisées du service). Sans cela, le navigateur bloque la réponse, exactement comme il bloquait le flux RSS ;
  5. copiez l’URL du webhook et collez-la dans le chat, en demandant : « récupère les données à cette URL et affiche-les sur l’écran des actualités ».

Précautions :

  • l’URL du flux est visible dans l’app, et n’importe qui peut l’appeler. Ne faites pas exécuter au flux quoi que ce soit qui coûte de l’argent ou modifie des données sans protection ;
  • le flux tourne sur votre compte du service, avec les limites et le prix de votre offre là-bas.

Un service public de conversion RSS

Il existe sur internet des services qui lisent un flux RSS et renvoient le contenu prêt pour le navigateur. Cela fonctionne, mais ce n’est pas l’idéal :

  • c’est un tiers : s’il tombe, l’écran de votre app tombe avec lui ;
  • il a souvent une limite d’usage, et l’app peut s’arrêter quand elle est atteinte ;
  • il voit tout ce que votre app lit à travers lui.

Cela convient pour un prototype. Pour une app en service, préférez le flux à vous ou la fonction backend.

Ce qu’il ne faut pas faire

Ne mettez jamais une clé secrète dans l’app, ni en la demandant à l’IA, ni en la collant dans le code. Tout ce qui est dans l’app arrive au navigateur des personnes qui l’utilisent, et n’importe qui peut le lire. Si la tâche a besoin d’une clé, elle a besoin d’un serveur : la fonction backend ou un intermédiaire à vous.

Savoir que cela a fonctionné

  • l’onglet Code affiche le fichier dans functions/ et l’entrée de la fonction dans fab.functions.json ;
  • l’écran qui utilise la fonction affiche le résultat (les éléments du flux, la valeur calculée) ;
  • si l’écran affiche une erreur, dites à l’assistant ce qui apparaît. Les erreurs les plus courantes sont une fonction qui demande la connexion à quelqu’un qui n’est pas connecté, et un plan de compte qui n’inclut pas les fonctions.

Problèmes courants

  • L’assistant a dit qu’il faut un autre plan. Le compte est en Free ou en Starter. Passez au Builder ou utilisez l’une des alternatives ci-dessus ;
  • L’écran demande de se connecter lors de l’appel à la fonction. La fonction est dans le mode par défaut (seulement les personnes connectées). Si elle doit être ouverte aux visiteurs, demandez-le dans le chat ;
  • Le compte a quitté le Builder et l’écran s’est arrêté. Les fonctions cessent de tourner en dehors du Builder. Refaites l’écran avec l’une des alternatives ou revenez au Builder ;
  • Le flux n8n, Make ou Pipedream répond, mais l’app n’affiche rien. C’est presque toujours CORS : le flux doit autoriser les appels venant de l’adresse de l’app.
Ouvrir Fabapp
À lire aussi
Activer les intégrationsWebhooks et notifications : Webhook (sortant), Slack, Discord et TelegramDemander des changements sans casser ce qui marche