Aller au contenu principal

Adaptateur Fastify

Le package @mastra/fastify fournit un adaptateur de serveur permettant d’exécuter Mastra avec Fastify. Pour en savoir plus sur les concepts généraux des adaptateurs, tels que les options du constructeur ou le processus d’initialisation, consultez la page Adaptateurs de serveur.

Installation
Lien direct vers Installation

Installez l’adaptateur Fastify et le framework Fastify :

npm install @mastra/fastify@latest fastify

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

server.ts
import Fastify from 'fastify'
import { MastraServer } from '@mastra/fastify'
import { mastra } from './mastra'

const app = Fastify({ logger: true })
const server = new MastraServer({ app, mastra })

await server.init()

app.listen({ port: 3000 }, (err, address) => {
if (err) {
console.error(err)
process.exit(1)
}
console.log(`Server running on ${address}`)
})

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

app:

FastifyInstance
Instance de l’application Fastify

mastra:

Mastra
Instance de Mastra

prefix?:

string
= ''
Préfixe du chemin des routes (par exemple, /api/v2)

openapiPath?:

string
= ''
Chemin depuis lequel exposer la spécification OpenAPI (par exemple, /openapi.json)

bodyLimitOptions?:

BodyLimitOptions
Limites de taille du corps des requêtes

streamOptions?:

StreamOptions
= { redact: true }
Configuration de la suppression des données sensibles du flux. Lorsque cette option vaut true (valeur par défaut), les données sensibles (prompts système, définitions des Tools et clés d’API) sont supprimées des segments du flux avant leur envoi aux clients.

customRouteAuthConfig?:

Map<string, boolean>
Remplacements de l’authentification pour chaque route. Les clés suivent le format METHOD:PATH (par exemple, GET:/api/health). La valeur false rend la route publique, tandis que true exige une authentification.

tools?:

ToolsInput
Tools disponibles pour le serveur

taskStore?:

InMemoryTaskStore
Stockage des tâches pour les opérations A2A (Agent-to-Agent)

mcpOptions?:

MCPOptions
Options de transport MCP. Définissez serverless: true pour les environnements sans état tels que Cloudflare Workers ou Vercel Edge.

Protection des routes brutes
Lien direct vers Protection des routes brutes

Lorsque vous souhaitez bénéficier de l’authentification gérée par Mastra et de métadonnées de route telles que requiresAuth, privilégiez registerApiRoute(). Pour les routes Fastify brutes montées directement sur l’application, utilisez createAuthMiddleware() :

server.ts
import Fastify from 'fastify'
import { createAuthMiddleware, MastraServer } from '@mastra/fastify'
import { mastra } from './mastra'

const app = Fastify()
const server = new MastraServer({ app, mastra })

await server.init()

app.get('/custom/protected', { preHandler: createAuthMiddleware({ mastra }) }, async request => {
const user = request.requestContext.get('user')
return { user }
})

app.get(
'/custom/public',
{ preHandler: createAuthMiddleware({ mastra, requiresAuth: false }) },
async () => {
return { ok: true }
},
)

Initialisation manuelle
Lien direct vers Initialisation manuelle

Pour personnaliser l’ordre des middlewares, appelez chaque méthode séparément au lieu d’utiliser init(). Consultez la section initialisation manuelle pour plus de détails.

Exemples
Lien direct vers Exemples