MastraServer
MastraServer 抽象類是所有伺服器轉接器的基類。擴展此類可為 Hono 或 Express 以外的框架建立轉接器。
匯入「匯入」的直接連結
import { MastraServer } from '@mastra/server/server-adapter'
類型參數「類型參數」的直接連結
MastraServer<TApp, TRequest, TResponse>
| 參數 | 描述 |
|---|---|
TApp | 框架應用類型(例如 Hono、Application) |
TRequest | 框架請求類型 |
TResponse | 框架回應/情境類型 |
建構函式「建構函式」的直接連結
constructor(options: MastraServerOptions<TApp>)
選項「選項」的直接連結
app:
TApp
框架應用程式執行個體
mastra:
Mastra
Mastra 執行個體
prefix?:
string
= ''
路由路徑前綴(例如
/api/v2)openapiPath?:
string
= ''
提供 OpenAPI 規格的路徑
bodyLimitOptions?:
BodyLimitOptions
請求主體大小限制
streamOptions?:
StreamOptions
= { redact: true }
串流遮罩設定
customRouteAuthConfig?:
Map<string, boolean>
依路由設定的認證覆寫項
tools?:
Record<string, Tool>
伺服器可用的 Tool
taskStore?:
InMemoryTaskStore
用於 A2A(Agent-to-Agent)操作的任務儲存
mcpOptions?:
MCPOptions
適用於無伺服器環境的 MCP 傳輸選項
抽象方法「抽象方法」的直接連結
轉接器必須實現以下方法:
registerContextMiddleware()「registercontextmiddleware」的直接連結
為每個請求附加 Mastra 情境。
abstract registerContextMiddleware(): void
要附加的情境:
mastra- Mastra 執行個體requestContext- 請求範圍的情境tools- 可用的 ToolabortSignal- 請求取消訊號
registerAuthMiddleware()「registerauthmiddleware」的直接連結
初始化期間執行轉接器認證hook。當認證依路由強制執行時,官方轉接器可以將其實現為無操作。
abstract registerAuthMiddleware(): void
registerRoute()「registerroute」的直接連結
向框架註冊單一路由。
abstract registerRoute(
app: TApp,
route: ServerRoute,
options: { prefix?: string }
): Promise<void>
getParams()「getparams」的直接連結
從請求中提取參數。
abstract getParams(
route: ServerRoute,
request: TRequest
): Promise<{
urlParams: Record<string, string>;
queryParams: Record<string, string>;
body: unknown;
}>
sendResponse()「sendresponse」的直接連結
根據路由類型傳送回應。
abstract sendResponse(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>
stream()「stream」的直接連結
處理串流回應。
abstract stream(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>
執行個體方法「執行個體方法」的直接連結
init()「init」的直接連結
透過註冊所有 middleware 和路由來初始化伺服器。
async init(): Promise<void>
依以下順序呼叫:
registerContextMiddleware()registerAuthMiddleware()registerRoutes()
registerRoutes()「registerroutes」的直接連結
註冊所有 Mastra 路由。
async registerRoutes(): Promise<void>
getApp()「getapp」的直接連結
取得框架應用程式執行個體。
getApp<T = TApp>(): T
parsePathParams()「parsepathparams」的直接連結
使用該路由的 Zod schema 驗證路徑參數。
async parsePathParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>
parseQueryParams()「parsequeryparams」的直接連結
使用該路由的 Zod schema 驗證查詢參數。
async parseQueryParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>
parseBody()「parsebody」的直接連結
使用該路由的 Zod schema 驗證請求主體。
async parseBody(
route: ServerRoute,
body: unknown
): Promise<unknown>
registerOpenAPIRoute()「registeropenapiroute」的直接連結
註冊一個提供 OpenAPI 規格的 endpoint。
async registerOpenAPIRoute(
app: TApp,
config: OpenAPIConfig,
options: { prefix?: string }
): Promise<void>
受保護的方法「受保護的方法」的直接連結
mergeRequestContext()「mergerequestcontext」的直接連結
合併來自多個來源(查詢參數和請求主體)的請求情境。
protected mergeRequestContext(options: {
paramsRequestContext?: Record<string, any>;
bodyRequestContext?: Record<string, any>;
}): RequestContext
類型「類型」的直接連結
BodyLimitOptions「bodylimitoptions」的直接連結
interface BodyLimitOptions {
maxSize: number
onError: (error: unknown) => unknown
}
StreamOptions「streamoptions」的直接連結
interface StreamOptions {
redact?: boolean
}
MCPOptions「MCPOptions」的直接連結
interface MCPOptions {
serverless?: boolean
sessionIdGenerator?: () => string
}
| 屬性 | 描述 |
|---|---|
serverless | 設為 true 時,會以不進行會話管理的無狀態模式執行 MCP。適用於 Cloudflare Workers 或 Vercel Edge 等無伺服器環境。 |
sessionIdGenerator | 用於產生會話 ID 的自訂函式。 |
範例「範例」的直接連結
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
}
}
相關內容「相關內容」的直接連結
- 伺服器轉接器:使用轉接器
- 自訂轉接器:建立自訂轉接器
- createRoute():建立自訂路由