Ana içeriğe geç

Fastify

Fastify

Middleware

bilgi

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')())
not

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

ipucu

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.