Fastify
Fastify
Middleware
Fastify v3.0.0 ile birlikte, middleware kutudan çıktığında desteklenmemektedir ve @fastify/express
veya @fastify/middie
gibi bir harici eklenti gerektirir.
@fastify/express
eklentisini use
Express middleware olarak kaydetmenin bir örneği:
await fastify.register(require('@fastify/express'))
fastify.use(require('cors')())
fastify.use(require('dns-prefetch-control')())
fastify.use(require('frameguard')())
fastify.use(require('hsts')())
fastify.use(require('ienoopen')())
fastify.use(require('x-xss-protection')())
Ayrıca, basit Express tarzı middleware için destek sağlayan ancak geliştirilmiş performansa sahip @fastify/middie
kullanabilirsiniz:
await fastify.register(require('@fastify/middie'))
fastify.use(require('cors')())
Middleware'in kapsüllenebileceğini unutmayın; bu, middleware'iniz nerede çalışacağını belirleyebileceğiniz anlamına gelir ve bunu register
kullanarak yapabilirsiniz. Bkz. plugins guide
.
Fastify middleware'i send
yöntemini veya Fastify Reply
örneğine özgü diğer yöntemleri açığa çıkarmamaktadır. Bunun nedeni, Fastify'ın gelen req
ve res
Node örneklerini Request
ve Reply
nesneleri ile sarmasıdır, ancak bu middleware aşamasından sonradır. Middleware oluşturmanız gerekiyorsa, Node'un req
ve res
örneklerini kullanmalısınız. Aksi takdirde, zaten Request
ve Reply
Fastify örneklerine sahip olan preHandler
kancasını kullanabilirsiniz. Daha fazla bilgi için bkz. Hooks
.
Middleware yürütmesini belirli yollara kısıtlayın
Sadece belirli yollar altında middleware çalıştırmanız gerekiyorsa, ilk parametre olarak sadece yolu use
metoduna geçirin ve işiniz tamam!
Bu, parametre içeren rotalar (ör. /user/:id/comments
) ile desteklenmez ve birden fazla yolda joker karakterler desteklenmez.
const path = require('node:path')
const serveStatic = require('serve-static')
// Tek yol
fastify.use('/css', serveStatic(path.join(__dirname, '/assets')))
// Joker yol
fastify.use('/css/(.*)', serveStatic(path.join(__dirname, '/assets')))
// Birden fazla yol
fastify.use(['/css', '/js'], serveStatic(path.join(__dirname, '/assets')))
Alternatifler
Fastify, en yaygın kullanılan middleware'ler için bazı alternatifler sunar, örneğin @fastify/helmet
eğer helmet
kullanıyorsanız, @fastify/cors
için cors
ve @fastify/static
için serve-static
.