Passer au contenu principal

Écrire le code du backend

Vue d'ensemble

Le code de la fonction backend s'exécute dans un environnement sans serveur associé à votre compte 8th Wall. Toutes les fonctions backend doivent exporter une méthode async de premier niveau appelée handler, qui est le point d'entrée dans la fonction backend.

Exemple de code de fichier d'entrée :

const handler = async (event : any) => {
// Le code backend personnalisé va ici

return {
body : JSON.stringify({
myResponse,
}),
}
}

export {
handler,
}

Méthode du client

Lorsque vous créez une fonction backend, une méthode client est automatiquement créée pour vous. Cette méthode du client est une enveloppe autour de fetch, ce qui signifie que vous pouvez passer les mêmes arguments à cette fonction que vous le feriez avec un appel normal à fetch. Voir Fetch API pour plus de détails.

Cette méthode client permet d'envoyer des requêtes du code client du module à la fonction backend.

FetchWrapper

Fonction Paramètres de l'événement

La méthode du gestionnaire est invoquée avec un objet event à chaque fois que la méthode du client est appelée. event a les propriétés suivantes :

PropriétéTypeDescription
cheminchaîne de caractèresLe chemin de l'URL passé à la méthode du client ('/getUser/foo' , '/checkAnswer', etc).
corpschaîne de caractèresAppeler JSON.parse(event.body) pour transformer le corps en objet.
httpMethodchaîne de caractèresLa méthode HTTP utilisée pour appeler la fonction du backend. Un des éléments suivants : 'GET'', 'PUT'', 'POST'', 'PATCH'', `'DELETE''.
queryStringParametersEnregistrer<string, string>Paires clé/valeur contenant les paramètres de la chaîne de requête de la demande.
en-têtesEnregistrer<string, string>Paires clé/valeur contenant les en-têtes de la demande.

Objet de retour

Toutes les propriétés sont facultatives.

PropriétéTypeDescription
code d'étatnombreLe code d'état de la réponse. La valeur par défaut est 200.
en-têtesEnregistrer<string, string>Les en-têtes associés à la réponse.
corpschaîne de caractèresL'objet JSON.stringify() associé à la réponse.

Gestion des erreurs

Si la fonction du backend lève une exception, la fonction retournera statusCode : 500 avec un objet d'erreur dans le corps de la réponse.

Si vous possédez le module et êtes en mode développement, l'objet d'erreur contiendra name, message et stack :

{erreur : {name: string, message: string, stack: string}}

Exemple :

{
"error" : {
"name" : "TypeError",
"message" : "Cannot read properties of undefined (reading 'foo')",
"stack" : "TypeError : Cannot read properties of undefined (reading 'foo')\n at call (webpack:///src/index.ts:8:24)\n ...
}
}

Pour le mode non-développement, l'objet d'erreur ne contiendra pas de propriété name ou stack et le message de sera une erreur générique de type "Internal Server Error".

Épingler des cibles

Veuillez vous référer à https://www.8thwall.com/docs/guides/modules/pinning-targets/ pour plus de détails sur les cibles d'épinglage du module .

Lors de l'épinglage d'une Version, Mises à jour autorisées doit être réglé sur None

BFNVersionPinning

Lorsque vous épinglez un Commit, sélectionnez un commit spécifique. Latest n'est pas supporté.

BFNCommitPinning