Ir al contenido principal

Escribir código backend

Visión general

El código de la función backend se ejecuta en un entorno sin servidor asociado a tu cuenta de 8th Wall. Todas las funciones backend deben exportar un método async de nivel superior llamado handler, que es el punto de entrada a la función backend.

Ejemplo de código de archivo de entrada:

const handler = async (event: any) => {
// El código personalizado del backend va aquí

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

export {
handler,
}

Método cliente

Cuando creas una función backend, se crea automáticamente un método cliente para ti. Este método del cliente es una envoltura alrededor de fetch, lo que significa que puede pasar los mismos argumentos a esta función como lo haría con una llamada normal a fetch. Consulte Fetch API para obtener más detalles.

Este método cliente es la forma de enviar peticiones desde el código cliente del módulo a la función backend.

FetchWrapper](/images/studio/bfn-fetch-wrapper.png)

Función Parámetros del evento

El método handler se invoca con un objeto event cada vez que se llama al método cliente. event tiene las siguientes propiedades:

PropiedadTipoDescripción
rutacadenaLa ruta URL pasada al método cliente ('/getUser/foo' , '/checkAnswer', etc).
cuerpocadenaLlama a JSON.parse(event.body) para transformar el cuerpo en un objeto.
httpMétodocadenaEl método HTTP utilizado para llamar a la función backend. Una de las opciones 'GET', 'PUT', 'POST', 'PATCH', 'DELETE'.
queryStringParametersRegistro<string, string>Pares clave/valor que contienen los parámetros de la cadena de consulta de la solicitud.
cabecerasRegistro<string, string>Pares clave/valor que contienen cabeceras de solicitud.

Devolver objeto

Todas las propiedades son opcionales.

PropiedadTipoDescripción
statusCodenúmeroEl código de estado de la respuesta. Por defecto es 200.
cabecerasRegistro<string, string>Las cabeceras asociadas a la respuesta.
cuerpocadenaEl objeto body JSON.stringify() asociado a la respuesta.

Tratamiento de errores

Si la función backend lanza una excepción no capturada, la función devolverá statusCode: 500 con un objeto de error en el cuerpo de la respuesta.

Si eres propietario del módulo y estás en modo desarrollo, el objeto de error contendrá name, message y stack:

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

Por ejemplo:

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

Para el modo de no desarrollo, el objeto de error no contendrá una propiedad name o stack y el message de será un genérico "Internal Server Error".

Fijación de objetivos

Consulte https://www.8thwall.com/docs/guides/modules/pinning-targets/ para obtener más información sobre los objetivos de fijación de módulos de .

Cuando se fija a una Versión, Actualizaciones permitidas debe establecerse en Ninguna.

BFNVersionPinning](/images/studio/bfn-version-pinning.png)

Al anclar a un Commit, seleccione un commit específico. No se admite Latest.

BFNCommitPinning](/images/studio/bfn-commit-pinning.png)