Fast and low overhead web framework, for Node.js | Fastify (2024)

Fast and low overhead web framework, for Node.js | Fastify (1)

Fast and low overhead web framework, for Node.js

An efficient server implies a lower cost of the infrastructure, a better responsiveness under load and happy users. How can you efficiently handle the resources of your server, knowing that you are serving the highest number of requests possible, without sacrificing security validations and handy development?

Enter Fastify. Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture. It is inspired by Hapi and Express and as far as we know, it is one of the fastest web frameworks in town.

Fastify is proudly powering a large ecosystem of organisations and products out there.

Sponsors

Would you like to sponsor Fastify financially? Support us on GitHub or Open Collective.

  • Fast and low overhead web framework, for Node.js | Fastify (2)
  • Fast and low overhead web framework, for Node.js | Fastify (3)

Using

Do you want your organisation to be featured here?

  • Fast and low overhead web framework, for Node.js | Fastify (4)
  • Fast and low overhead web framework, for Node.js | Fastify (5)
  • Fast and low overhead web framework, for Node.js | Fastify (6)
  • Fast and low overhead web framework, for Node.js | Fastify (7)
  • Fast and low overhead web framework, for Node.js | Fastify (8)
  • Fast and low overhead web framework, for Node.js | Fastify (9)
  • Fast and low overhead web framework, for Node.js | Fastify (10)
  • Fast and low overhead web framework, for Node.js | Fastify (11)

... and many more!

These are the main features and principles on which Fastify has been built:

  • Highly performant: as far as we know, Fastify is one of the fastest web frameworks in town, depending on the code complexity we can serve up to 30 thousand requests per second.
  • Extensible: Fastify is fully extensible via its hooks, plugins and decorators.
  • Schema based: even if it is not mandatory we recommend to use JSON Schema to validate your routes and serialize your outputs, internally Fastify compiles the schema in a highly performant function.
  • Logging: logs are extremely important but are costly; we chose the best logger to almost remove this cost, Pino!
  • Developer friendly: the framework is built to be very expressive and to help developers in their daily use, without sacrificing performance and security.
  • TypeScript ready: we work hard to maintain a TypeScript type declaration file so we can support the growing TypeScript community.

Get Fastify with NPM:

npm install fastify

Then create server.js and add the following content:

  • ESM
  • CJS
// Import the framework and instantiate it
import Fastify from 'fastify'
const fastify = Fastify({
logger: true
})

// Declare a route
fastify.get('/', async function handler (request, reply) {
return { hello: 'world' }
})

// Run the server!
try {
await fastify.listen({ port: 3000 })
} catch (err) {
fastify.log.error(err)
process.exit(1)
}

Finally, launch the server with:

node server

and test it with:

curl http://localhost:3000

Using CLI

Get the fastify-cli to create a new scaffolding project:

npm install --global fastify-cli
fastify generate myproject

Request/Response validation and hooks

Fastify can do much more than this. For example, you can easily provide input and output validation using JSON Schema and perform specific operations before the handler is executed:

  • ESM
  • CJS
import Fastify from 'fastify'
const fastify = Fastify({
logger: true
})

fastify.route({
method: 'GET',
url: '/',
schema: {
// request needs to have a querystring with a `name` parameter
querystring: {
type: 'object',
properties: {
name: { type: 'string'}
},
required: ['name'],
},
// the response needs to be an object with an `hello` property of type 'string'
response: {
200: {
type: 'object',
properties: {
hello: { type: 'string' }
}
}
}
},
// this function is executed for every request before the handler is executed
preHandler: async (request, reply) => {
// E.g. check authentication
},
handler: async (request, reply) => {
return { hello: 'world' }
}
})

try {
await fastify.listen({ port: 3000 })
} catch (err) {
fastify.log.error(err)
process.exit(1)
}

TypeScript Support

Fastify is shipped with a typings file, but you may need to install @types/node, depending on the Node.js version you are using.
The following example creates a http server.
We pass the relevant typings for our http version used. By passing types we get correctly typed access to the underlying http objects in routes.
If using http2 we would pass <http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>.
For https pass http2.Http2SecureServer or http.SecureServer instead of Server.
This ensures within the server handler we also get http.ServerResponse with correct typings on reply.res.

  • TypeScript
import Fastify, { FastifyInstance, RouteShorthandOptions } from 'fastify'
import { Server, IncomingMessage, ServerResponse } from 'http'

const server: FastifyInstance = Fastify({})

const opts: RouteShorthandOptions = {
schema: {
response: {
200: {
type: 'object',
properties: {
pong: {
type: 'string'
}
}
}
}
}
}

server.get('/ping', opts, async (request, reply) => {
return { pong: 'it worked!' }
})

const start = async () => {
try {
await server.listen({ port: 3000 })

const address = server.server.address()
const port = typeof address === 'string' ? address : address?.port

} catch (err) {
server.log.error(err)
process.exit(1)
}
}

start()

Visit the Documentation to learn more about all the features that Fastify has to offer.

Leveraging our experience with Node.js performance, Fastify has been built from the ground up to be as fast as possible. Have a look at our benchmarks section to compare Fastify performance to other common web frameworks.

Check out our benchmarks

Fastify has an ever-growing ecosystem of plugins. Probably there is already a plugin for your favourite database or template language. Have a look at the Ecosystem page to navigate through the currently available plugins. Can't you find the plugin you are looking for? No problem, it's very easy to write one!

Explore 296 plugins

In alphabetical order

Lead Maintainers

Fast and low overhead web framework, for Node.js | Fastify (12)

Matteo Collina

Fast and low overhead web framework, for Node.js | Fastify (13)

Tomas Della Vedova

Fast and low overhead web framework, for Node.js | Fastify (14)

Manuel Spigolon

Fast and low overhead web framework, for Node.js | Fastify (15)

James Sumners

Collaborators

Fast and low overhead web framework, for Node.js | Fastify (16)

Aras Abbasi

Fast and low overhead web framework, for Node.js | Fastify (17)

Tommaso Allevi

Fast and low overhead web framework, for Node.js | Fastify (18)

Ayoub El Khattabi

Fast and low overhead web framework, for Node.js | Fastify (20)

Dan Castilo

Fast and low overhead web framework, for Node.js | Fastify (21)

Gürgün Dayıoğlu

Fast and low overhead web framework, for Node.js | Fastify (22)

Dustin Deus

Fast and low overhead web framework, for Node.js | Fastify (23)

Carlos Fuentes

Fast and low overhead web framework, for Node.js | Fastify (24)

Rafael Gonzaga

Fast and low overhead web framework, for Node.js | Fastify (25)

Jean Michelet

Fast and low overhead web framework, for Node.js | Fastify (26)

Vincent Le Goff

Fast and low overhead web framework, for Node.js | Fastify (27)

Luciano Mammino

Fast and low overhead web framework, for Node.js | Fastify (28)

Salman Mitha

Fast and low overhead web framework, for Node.js | Fastify (29)

Igor Savin

Fast and low overhead web framework, for Node.js | Fastify (30)

Evan Shortiss

Fast and low overhead web framework, for Node.js | Fastify (31)

Maksim Sinik

Fast and low overhead web framework, for Node.js | Fastify (32)

Frazer Smith

Past Collaborators

Fast and low overhead web framework, for Node.js | Fastify (33)

Ethan Arrowood

Fast and low overhead web framework, for Node.js | Fastify (34)

Çağatay Çalı

Fast and low overhead web framework, for Node.js | Fastify (35)

Cemre Mengu

Fast and low overhead web framework, for Node.js | Fastify (36)

Trivikram Kamat

Fast and low overhead web framework, for Node.js | Fastify (37)

Nathan Woltman

This project is kindly sponsored by:

Past Sponsors:

Also thanks to:

We are an At Large project at the OpenJS Foundation

Fast and low overhead web framework, for Node.js | Fastify (38)


Fast and low overhead web framework, for Node.js | Fastify (2024)
Top Articles
The 10 Components of a Business Plan
The Dollar’s Dominance, Explained
Fort Morgan Hometown Takeover Map
How To Fix Epson Printer Error Code 0x9e
55Th And Kedzie Elite Staffing
Joliet Patch Arrests Today
Google Sites Classroom 6X
Sprague Brook Park Camping Reservations
Jefferson County Ky Pva
Jesus Revolution Showtimes Near Chisholm Trail 8
Nieuwe en jong gebruikte campers
Elle Daily Horoscope Virgo
3656 Curlew St
Simple Steamed Purple Sweet Potatoes
Hope Swinimer Net Worth
1Win - инновационное онлайн-казино и букмекерская контора
Assets | HIVO Support
Regal Stone Pokemon Gaia
Chris Hipkins Fue Juramentado Como El Nuevo Primer Ministro De...
Jvid Rina Sauce
Mbta Commuter Rail Lowell Line Schedule
Destiny 2 Salvage Activity (How to Complete, Rewards & Mission)
Spergo Net Worth 2022
E22 Ultipro Desktop Version
Talbots.dayforce.com
Earl David Worden Military Service
The Weather Channel Local Weather Forecast
Ice Dodo Unblocked 76
Uncovering The Mystery Behind Crazyjamjam Fanfix Leaked
Wics News Springfield Il
Ihub Fnma Message Board
Move Relearner Infinite Fusion
Sessional Dates U Of T
Kristy Ann Spillane
Obsidian Guard's Skullsplitter
Renfield Showtimes Near Marquee Cinemas - Wakefield 12
Leland Nc Craigslist
Supermarkt Amsterdam - Openingstijden, Folder met alle Aanbiedingen
Hermann Memorial Urgent Care Near Me
A Man Called Otto Showtimes Near Amc Muncie 12
Autozone Locations Near Me
Ukg Dimensions Urmc
Craigslist Jobs Brownsville Tx
Dogs Craiglist
Anguilla Forum Tripadvisor
60 X 60 Christmas Tablecloths
511Pa
Does Target Have Slime Lickers
Big Reactors Best Coolant
Deezy Jamaican Food
Latest Posts
Article information

Author: Corie Satterfield

Last Updated:

Views: 6349

Rating: 4.1 / 5 (42 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Corie Satterfield

Birthday: 1992-08-19

Address: 850 Benjamin Bridge, Dickinsonchester, CO 68572-0542

Phone: +26813599986666

Job: Sales Manager

Hobby: Table tennis, Soapmaking, Flower arranging, amateur radio, Rock climbing, scrapbook, Horseback riding

Introduction: My name is Corie Satterfield, I am a fancy, perfect, spotless, quaint, fantastic, funny, lucky person who loves writing and wants to share my knowledge and understanding with you.