# Fastify **Repository Path**: fnet/Fastify ## Basic Information - **Project Name**: Fastify - **Description**: Fastify 是一个高度专注于以最少开销和强大的插件架构提供最佳开发人员体验的 Web 框架 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 12 - **Created**: 2017-10-22 - **Last Updated**: 2024-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Getting Started.
### Core features
- **100% asynchronous:** all the core is implemented with asynchronous code, in this way not even a millisecond is wasted.
- **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 34000 requests per second.
- **Extendible:** Fastify is fully extensible via its hooks, plugins and decorators.
- **Schema based:** even if it is not mandatory we recommend to use [JSON Schema](http://json-schema.org/) 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](https://github.com/pinojs/pino)!
- **Developer friendly:** the framework is built to be very expressive and help the developer in his daily use, without sacrificing performance and security.
### Benchmarks
__Machine:__ Intel Xeon E5-2686 v4 @ 2.30GHz (4 cores, 8 threads), 16GiB RAM (Amazon EC2 m4.xlarge)
__Method:__: `autocannon -c 100 -d 10 -p 10 localhost:3000` * 2, taking the second average
| Framework | Version | Router? | Requests/sec |
| :----------------- | :------------------------- | :----------: | ------------: |
| hapi | 16.6.2 | ✓ | 5,768 |
| Restify | 5.2.0 | ✓ | 17,589 |
| Express | 4.16.1 | ✓ | 20,860 |
| total.js | 2.8.0 | ✓ | 22,201 |
| Koa (`koa-router`) | 2.3.0 (`koa-router@7.2.1`) | ✓ | 23,093 |
| Koa | 2.3.0 | ✗ | 25,571 |
| take-five | 1.3.4 | ✓ | 28,255 |
| micro (`micro-router`) | 9.0.0 (`micro-router@2.2.3` ) | ✓ | 28,700 |
| connect (`router`) | 3.6.5 (`router@1.3.2`) | ✓ | 33,753 |
| **Fastify** | **0.29.2** | **✓** | **34,613** |
| micro | 9.0.0 | ✗ | 36,522 |
| connect | 3.6.5 | ✗ | 37,810 |
| - | | | |
| `http.Server` | 8.6.0 | ✗ | 39,952 |
Benchmarks taken using https://github.com/fastify/benchmarks. This is a
synthetic, "hello world" benchmark that aims to evaluate the framework
overhead. The overhead that each framework has on your application
depends on your application, you should __always__ benchmark if performance
matters to you.
The relative overhead of micro, connect and fastify is too small to measure, and
they perform very closely on this benchmarks.
## Documentation
* Getting Started
* Server Methods
* Routes
* Logging
* Middlewares
* Hooks
* Decorators
* Validation and Serialization
* Lifecycle
* Reply
* Request
* Content Type Parser
* Plugins
* Testing
* Plugins Guide
## Ecosystem
- [`fastify-accepts`](https://github.com/fastify/fastify-accepts) to have [accepts](https://www.npmjs.com/package/accepts) in your request object.
- [`fastify-accepts-serializer`](https://github.com/fastify/fastify-accepts-serializer) to serialize to output according to `Accept` header
- [`fastify-apollo`](https://github.com/coopnd/fastify-apollo) Run an [Apollo Server](https://github.com/apollographql/apollo-server) with Fastify. (GraphQL)
- [`fastify-auth`](https://github.com/fastify/fastify-auth) Run multiple auth functions in Fastify
- [`fastify-bankai`](https://github.com/fastify/fastify-bankai) [Bankai](https://github.com/yoshuawuyts/bankai) assets compiler for Fastify
- [`fastify-bearer-auth`](https://github.com/fastify/fastify-bearer-auth) Bearer auth plugin for Fastify
- [`fastify-cookie`](https://github.com/fastify/fastify-cookie) Parse and set cookie headers
- [`fastify-env`](https://github.com/fastify/fastify-env) Load and check configuration
- [`fastify-formbody`](https://github.com/fastify/fastify-formbody) Plugin to parse x-www-form-urlencoded bodies
- [`fastify-graceful-shutdown`](https://github.com/hemerajs/fastify-graceful-shutdown) Shutdown Fastify graceful asynchronously
- [`fastify-helmet`](https://github.com/fastify/fastify-helmet) Important security headers for Fastify
- [`fastify-hemera`](https://github.com/hemerajs/fastify-hemera) Fastify Hemera plugin, for writing reliable & fault-tolerant microservices with [nats.io](https://nats.io/)
- [`fastify-jwt`](https://github.com/fastify/fastify-jwt) JWT utils for Fastify, internally uses [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken)
- [`fastify-leveldb`](https://github.com/fastify/fastify-leveldb) Plugin to share a common LevelDB connection across Fastify.
- [`fastify-mongodb`](https://github.com/fastify/fastify-mongodb)
Fastify MongoDB connection plugin, with this you can share the same MongoDb connection pool in every part of your server.
- [`fastify-multipart`](https://github.com/fastify/fastify-multipart)
Multipart support for Fastify
- [`fastify-nats`](https://github.com/mahmed8003/fastify-nats)
Plugin to share [NATS](http://nats.io) client across Fastify.
- [`fastify-orientdb`](https://github.com/mahmed8003/fastify-orientdb)
Fastify OrientDB connection plugin, with this you can share the orientdb connection in every part of your server.
- [`fastify-postgres`](https://github.com/fastify/fastify-postgres) Fastify PostgreSQL connection plugin, with this you can share the same PostgreSQL connection pool in every part of your server.
- [`fastify-react`](https://github.com/fastify/fastify-react) React server side rendering support for Fastify with [Next](https://github.com/zeit/next.js/)
- [`fastify-redis`](https://github.com/fastify/fastify-redis)
Fastify Redis connection plugin, with this you can share the same Redis connection in every part of your server.
- [`fastify-register-timeout`](https://github.com/fastify/fastify-register-timeout) Register plugin with a timeout
- [`fastify-sse`](https://github.com/lolo32/fastify-sse) to provide Server-Sent Events with `reply.sse( … )` to Fastify
- [`fastify-swagger`](https://github.com/fastify/fastify-swagger)
Swagger documentation generator for Fastify
- [`fastify-websocket`](https://github.com/fastify/fastify-websocket) WebSocket support for Fastify. Built upon [websocket-stream](https://github.com/maxogden/websocket-stream)
- [`point-of-view`](https://github.com/fastify/point-of-view)
Templates rendering (*ejs, pug, handlebars, marko*) plugin support for Fastify.
- *More coming soon*
## Team
_Fastify_ is the result of the work of a great community.
Team members are listed in alphabetical order.
### Lead Maintainers
* [__Matteo Collina__](https://github.com/mcollina),