サーバープラグイン
サーバープラグイン
開発モードと本番モードに対応したHTTPサーバー機能を提供します。
主な機能:
- REST API向けのExpressサーバー
- ホットモジュールリロードに対応したVite開発サーバー
- 本番環境向けの静的ファイル配信
- デプロイ済みバックエンドへのリモートトンネリング
Server pluginは、遅延初期化フェーズを利用して他のpluginのルートにアクセスします。
機能
- Express サーバーを起動します (デフォルトは
host=0.0.0.0、port=8000) - plugin のルートを
/api/<pluginName>/...配下にマウントします /healthendpoint を追加します ({ status: "ok" }を返します)- フロントエンドを配信します:
- 開発時 (
NODE_ENV=development) : Vite 開発サーバーをミドルウェアモードで実行します - 本番時: 静的フロントエンドのディレクトリを自動検出します (
dist、client/dist、build、public、outを順に確認)
- 開発時 (
最小構成のサーバー例
有効な最小構成の AppKit サーバーは次のとおりです。
// server/server.ts
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [server()],
});カスタムルートの例
onPluginsReady コールバックを使用すると、サーバー起動前に Express へカスタムルートを追加できます。
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [server()],
onPluginsReady(appkit) {
appkit.server.extend((app) => {
app.get("/custom", (_req, res) => res.json({ ok: true }));
});
},
});onPluginsReady コールバックは非同期処理にも対応しています。
await createApp({
plugins: [server()],
async onPluginsReady(appkit) {
const pool = await initializeDatabase();
appkit.server.extend((app) => {
app.get("/data", async (_req, res) => {
const result = await pool.query("SELECT 1");
res.json(result);
});
});
},
});設定オプション
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [
server({
port: 8000, // デフォルト: Number(process.env.DATABRICKS_APP_PORT) || 8000
host: "0.0.0.0", // デフォルト: process.env.FLASK_RUN_HOST || "0.0.0.0"
staticPath: "dist", // 任意: 特定の静的ディレクトリを強制的に指定
}),
],
});