MastraServer
La classe abstraite MastraServer est la base de tous les adaptateurs de serveur. Étendez cette classe pour créer des adaptateurs pour des frameworks autres que Hono ou Express.
ImportationLien direct vers Importation
import { MastraServer } from '@mastra/server/server-adapter'
Paramètres de typeLien direct vers Paramètres de type
MastraServer<TApp, TRequest, TResponse>
| Paramètre | Description |
|---|---|
TApp | Type d'application du framework (par exemple, Hono, Application) |
TRequest | Type de requête du framework |
TResponse | Type de réponse/contexte du framework |
ConstructeurLien direct vers Constructeur
constructor(options: MastraServerOptions<TApp>)
OptionsLien direct vers Options
app:
mastra:
prefix?:
/api/v2)openapiPath?:
bodyLimitOptions?:
streamOptions?:
customRouteAuthConfig?:
tools?:
taskStore?:
mcpOptions?:
Méthodes abstraitesLien direct vers Méthodes abstraites
Ces méthodes doivent être implémentées par les adaptateurs :
registerContextMiddleware()Lien direct vers registercontextmiddleware
Attache le contexte Mastra à chaque requête.
abstract registerContextMiddleware(): void
Contexte à attacher :
mastra- instance MastrarequestContext- contexte limité à la requêtetools- outils disponiblesabortSignal- signal d'annulation de la requête
registerAuthMiddleware()Lien direct vers registerauthmiddleware
Exécute le hook d'authentification de l'adaptateur pendant l'initialisation. Les adaptateurs officiels peuvent l'implémenter comme une opération vide lorsque l'authentification est appliquée par route.
abstract registerAuthMiddleware(): void
registerRoute()Lien direct vers registerroute
Enregistre une seule route auprès du framework.
abstract registerRoute(
app: TApp,
route: ServerRoute,
options: { prefix?: string }
): Promise<void>
getParams()Lien direct vers getparams
Extrait les paramètres de la requête.
abstract getParams(
route: ServerRoute,
request: TRequest
): Promise<{
urlParams: Record<string, string>;
queryParams: Record<string, string>;
body: unknown;
}>
sendResponse()Lien direct vers sendresponse
Envoie une réponse en fonction du type de route.
abstract sendResponse(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>
stream()Lien direct vers stream
Gère les réponses en flux continu.
abstract stream(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>
Méthodes d'instanceLien direct vers Méthodes d'instance
init()Lien direct vers init
Initialise le serveur en enregistrant tous les middlewares et toutes les routes.
async init(): Promise<void>
Appelle, dans l'ordre :
registerContextMiddleware()registerAuthMiddleware()registerRoutes()
registerRoutes()Lien direct vers registerroutes
Enregistre toutes les routes Mastra.
async registerRoutes(): Promise<void>
getApp()Lien direct vers getapp
Obtient l'instance d'application du framework.
getApp<T = TApp>(): T
parsePathParams()Lien direct vers parsepathparams
Valide les paramètres de chemin avec le schéma Zod de la route.
async parsePathParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>
parseQueryParams()Lien direct vers parsequeryparams
Valide les paramètres de requête avec le schéma Zod de la route.
async parseQueryParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>
parseBody()Lien direct vers parsebody
Valide le corps de la requête avec le schéma Zod de la route.
async parseBody(
route: ServerRoute,
body: unknown
): Promise<unknown>
registerOpenAPIRoute()Lien direct vers registeropenapiroute
Enregistre un endpoint qui sert la spécification OpenAPI.
async registerOpenAPIRoute(
app: TApp,
config: OpenAPIConfig,
options: { prefix?: string }
): Promise<void>
Méthodes protégéesLien direct vers Méthodes protégées
mergeRequestContext()Lien direct vers mergerequestcontext
Fusionne le contexte de la requête à partir de plusieurs sources (paramètres de requête et corps).
protected mergeRequestContext(options: {
paramsRequestContext?: Record<string, any>;
bodyRequestContext?: Record<string, any>;
}): RequestContext
TypesLien direct vers Types
BodyLimitOptionsLien direct vers bodylimitoptions
interface BodyLimitOptions {
maxSize: number
onError: (error: unknown) => unknown
}
StreamOptionsLien direct vers streamoptions
interface StreamOptions {
redact?: boolean
}
MCPOptionsLien direct vers MCPOptions
interface MCPOptions {
serverless?: boolean
sessionIdGenerator?: () => string
}
| Propriété | Description |
|---|---|
serverless | Lorsque la valeur est true, exécute MCP en mode sans état, sans gestion des sessions. À utiliser pour des environnements serverless tels que Cloudflare Workers ou Vercel Edge. |
sessionIdGenerator | Fonction personnalisée qui génère des ID de session. |
ExempleLien direct vers Exemple
import { MastraServer, ServerRoute } from '@mastra/server/server-adapter'
import type { Mastra } from '@mastra/core'
export class MyServer extends MastraServer<MyApp, MyRequest, MyResponse> {
registerContextMiddleware(): void {
this.app.use('*', (req, res, next) => {
res.locals.mastra = this.mastra
next()
})
}
registerAuthMiddleware(): void {
const auth = this.mastra.getServer()?.auth
if (!auth) return
// Register global auth middleware, or leave this empty and
// enforce auth when routes are registered.
}
async registerRoute(app, route, { prefix }) {
// Implement route registration
}
async getParams(route, request) {
return {
urlParams: request.params,
queryParams: request.query,
body: request.body,
}
}
async sendResponse(route, response, result) {
return response.json(result)
}
async stream(route, response, result) {
// Implement streaming
}
}
Ressources associéesLien direct vers Ressources associées
- Adaptateurs de serveur : utiliser des adaptateurs
- Adaptateurs personnalisés : créer des adaptateurs personnalisés
- createRoute() : créer des routes personnalisées