Accéder au contenu principal

Plugin Server

Plugin Server

Fournit des fonctionnalités de serveur HTTP avec des modes développement et production.

Principales fonctionnalités :

  • Serveur Express pour les API REST
  • Serveur de développement Vite avec rechargement à chaud des modules
  • Distribution de fichiers statiques en production
  • Tunnellisation distante vers les backends déployés

Le plugin Server s'appuie sur la phase d'initialisation différée pour accéder aux routes des autres plugins.

Rôle

  • Démarre un serveur Express (par défaut host=0.0.0.0, port=8000)
  • Monte les routes du plugin sous /api/<pluginName>/...
  • Ajoute un endpoint /health (qui renvoie { status: "ok" })
  • Sert le frontend :
    • Développement (NODE_ENV=development) : lance un serveur de développement Vite en mode middleware
    • Production : détecte automatiquement le répertoire du frontend statique (recherche dist, client/dist, build, public, out)

Exemple de serveur minimal

Le plus petit serveur AppKit valide :

// server/server.ts
import { createApp, server } from "@databricks/appkit";

await createApp({
  plugins: [server()],
});

Exemple de routes personnalisées

Utilisez le callback onPluginsReady pour ajouter des routes personnalisées à Express avant le démarrage du serveur :

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 }));
    });
  },
});

Le callback onPluginsReady prend également en charge les opérations asynchrones :

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);
      });
    });
  },
});

Options de configuration

import { createApp, server } from "@databricks/appkit";

await createApp({
  plugins: [
    server({
      port: 8000,          // par défaut : Number(process.env.DATABRICKS_APP_PORT) || 8000
      host: "0.0.0.0",     // par défaut : process.env.FLASK_RUN_HOST || "0.0.0.0"
      staticPath: "dist",  // facultatif : impose un répertoire statique précis
    }),
  ],
});

Databricks Developer Hub

Prêt à lancer votre prochaine application agentique en quelques minutes ?

Lire la documentation