fastify-edge v0.0.4
fastify-edge
An experimental lightweight worker version of Fastify.
Currently Cloudflare Workers and Bun are supported.
Install
npm i fastify-edge --save
Usage: Bun
import FastifyEdge from 'fastify-edge/bun'
const app = FastifyEdge();
app.get('/', (_, reply) => {
reply.send('Hello World')
})
export default app;
See examples/bun
.
Usage: Cloudflare Workers
import FastifyEdge from 'fastify-edge'
const app = FastifyEdge()
app.get('/', (_, reply) => {
reply.send('Hello World')
})
See examples/cloudflare
with miniflare
.
Advanced Example
app.addHook('onSend', (req, reply, payload) => {
if (req.url === '/') {
return `${payload} World!`
}
})
app.get('/redirect', (_, reply) => {
reply.redirect('/')
})
app.get('/route-hook', {
onRequest (_, reply) {
reply.send('<b>Content from onRequest hook</b>')
},
handler (_, reply) {
reply.type('text/html')
}
})
Supported APIs
Server
app.addHook(hook, function)
app.route(settings)
app.get(path, handlerOrSettings)
app.post(path, handlerOrSettings)
app.put(path, handlerOrSettings)
app.delete(path, handlerOrSettings)
app.options(path, handlerOrSettings)
Request
req.body
The consumed body following the parsing pattern from this example.
req.params
req.headers
Maps to the fetch
request headers
object through a Proxy
.
req.raw
The raw fetch
request object.
Reply
reply.code(code)
Sets the fetch
response status
property.
reply.header(key, value)
reply.headers(object)
Adds multiple headers to the fetch
response headers
object.
reply.getHeader(key)
Retrieves an individual header from fetch
response headers
object.
reply.getHeaders()
Retrieves all headers from fetch
response headers
object.
reply.removeHeader(key)
Remove an individual header from fetch
response headers
object.
reply.hasHeader(header)
Asserts presence of an individual header in the fetch
response headers
object.
reply.redirect(code, dest)
reply.redirect(dest)
Sets the status
and redirect location for the fetch
response object.
Defaults to the HTTP 302 Found response code.
reply.type(contentType)
Sets the content-type
header for the fetch
response object.
reply.send(data)
Sets the body
for the fetch
response object.
Can be a string, an object, a buffer or a stream.
Objects are automatically serialized as JSON.
Supported hooks
The original Fastify
onRequest
,
onSend
and
onResponse
are supported.
Diverging from Fastify, they're all treated as async functions.
They can be set at the global and route levels.
Limitations
- No support for
preHandler
,preParsing
andpreValdation
hooks. - No support for Fastify's plugin system (yet).
- No support for Fastify's logging and validation facilities.
- Still heavily experimental, more equivalent APIs coming soon.