Plugin de servidor
Plugin de servidor
Proporciona capacidades de servidor HTTP con modos de desarrollo y producción.
Características principales:
- Servidor Express para APIs REST
- Servidor de desarrollo Vite con recarga de módulos en caliente
- Servicio de archivos estáticos para producción
- Túneles remotos hacia backends desplegados
El plugin de servidor utiliza la fase de inicialización diferida para acceder a las rutas de otros plugins.
Qué hace
- Inicia un servidor Express (por defecto
host=0.0.0.0,port=8000) - Monta las rutas del plugin bajo
/api/<pluginName>/... - Añade el endpoint
/health(devuelve{ status: "ok" }) - Sirve el frontend:
- Desarrollo (
NODE_ENV=development): ejecuta un servidor de desarrollo de Vite en modo middleware - Producción: detecta automáticamente el directorio del frontend estático (comprueba
dist,client/dist,build,public,out)
- Desarrollo (
Ejemplo mínimo de servidor
El servidor de AppKit válido más simple:
// server/server.ts
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [server()],
});Ejemplo de rutas personalizadas
Usa el callback onPluginsReady para extender Express con rutas personalizadas antes de que se inicie el servidor:
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 }));
});
},
});El callback onPluginsReady también admite operaciones asíncronas:
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);
});
});
},
});Opciones de configuración
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [
server({
port: 8000, // predeterminado: Number(process.env.DATABRICKS_APP_PORT) || 8000
host: "0.0.0.0", // predeterminado: process.env.FLASK_RUN_HOST || "0.0.0.0"
staticPath: "dist", // opcional: forzar un directorio estático concreto
}),
],
});