Integration with AWS Lambda
AWS Lambda is a serverless computing platform that makes it easy to build applications that run on the AWS cloud. feTS is platform-agnostic so they can fit together easily.
Installation
npm i fets
Example
fets.ts
import { createRouter, Response } from 'fets'
import { APIGatewayEvent, APIGatewayProxyResult, Context } from 'aws-lambda'
const router = createRouter<{
event: APIGatewayEvent
lambdaContext: Context
}>()
.route({
method: 'GET',
path: '/greetings',
schemas: {
responses: {
200: {
type: 'object',
properties: {
message: {
type: 'string'
}
},
required: ['message'],
additionalProperties: false
}
}
} ,
handler: () => Response.json({ message: 'Hello World!' })
})
export async function handler(
event: APIGatewayEvent,
lambdaContext: Context
): Promise<APIGatewayProxyResult> {
const response = await router.fetch(
event.path + '?' + new URLSearchParams(event.queryStringParameters as Record<string, string> || {}).toString(),
{
{
method: event.httpMethod,
headers: event.headers as HeadersInit,
body: event.body
? Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8')
: undefined
},
{
event,
lambdaContext
}
)
const responseHeaders: Record<string, string> = {}
response.headers.forEach((value, name) => {
responseHeaders[name] = value
})
return {
statusCode: response.status,
headers: responseHeaders,
body: await response.text(),
isBase64Encoded: false
}
}