大家好,我是 Yubin
在 Fastify 的世界中,我們可以透過 Plugins 來擴充許多功能。
這篇文章跟大家介紹 Plugin 這個東西。
一個 Plugin 可以把許多功能、routes 、decorators 封裝起來,封裝起來的好處可以透過 JavaScript Module 的特性,把這個 module 分享給其他專案或其他人使用。
對 Fastify 開發者來說,不論是自己定義的 Plugin 或別人寫好,透過 npm install
下載進專案中的 Plugin。只需要透過 server.register()
方法來註冊,就可以享有這個 Plugin 定義的功能。
要設計一個 Plugin 也很單純,以我自己來說也有貢獻一支介接 Keycloak 用來做驗證功能的 Plugin: fastify-keycloak-adapter。
我們來看看要如何撰寫一支 Fastify Plugin
import fastify, { FastifyInstance } from 'fastify'
const server: FastifyInstance = fastify()
function MyPlugin (server, opts, done) {
server.get('/', (request, reply) => {
return reply.status(200).send({message: "Hello World"})
}
done()
}
server.register(MyPlugin)
第一行定義 Plugin,第一個參數是 FastifyInstance
,
第二個參數是 Option 物件,
第三個參數 done
,呼叫這個 done()
表示這個 Plugin 執行完成。
可以在 Plugin 的內部,定義 route、定義 decorator、寫 log 等動作。
然後在外部透過 FastifyInstance 的 .register()
方法註冊。
就可以完成一支 Fastify Plugin 的實作。