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)
- Développement (
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
}),
],
});