Plugin de servidor
Plugin de servidor
Fornece recursos de servidor HTTP com modos de desenvolvimento e produção.
Principais recursos:
- Servidor Express para APIs REST
- Servidor de desenvolvimento Vite com hot module reload
- Entrega de arquivos estáticos em produção
- Tunelamento remoto para backends em produção (deploy)
O plugin de servidor usa a fase de inicialização adiada para acessar rotas de outros plugins.
O que ele faz
- Inicia um servidor Express (padrão
host=0.0.0.0,port=8000) - Monta as rotas do plugin em
/api/<pluginName>/... - Adiciona o endpoint
/health(retorna{ status: "ok" }) - Serve o frontend:
- Desenvolvimento (
NODE_ENV=development): executa um servidor de desenvolvimento Vite em modo middleware - Produção: detecta automaticamente o diretório estático do frontend (verifica
dist,client/dist,build,public,out)
- Desenvolvimento (
Exemplo mínimo de servidor
O menor servidor AppKit válido:
// server/server.ts
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [server()],
});Exemplo de rotas personalizadas
Use o callback onPluginsReady para estender o Express com rotas personalizadas antes de o servidor iniciar:
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 }));
});
},
});O callback onPluginsReady também oferece suporte a operações assí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);
});
});
},
});Opções de configuração
import { createApp, server } from "@databricks/appkit";
await createApp({
plugins: [
server({
port: 8000, // padrão: Number(process.env.DATABRICKS_APP_PORT) || 8000
host: "0.0.0.0", // padrão: process.env.FLASK_RUN_HOST || "0.0.0.0"
staticPath: "dist", // opcional: força um diretório estático específico
}),
],
});