Configuração
Configure sua aplicação AzuraJS
Configuração ⚙️
AzuraJS usa um sistema de configuração baseado em arquivo que suporta formatos TypeScript, JSON e YAML.
Arquivo de Configuração 📄
Crie um arquivo azura.config.ts na raiz do seu projeto:
import type { ConfigTypes } from "azurajs/config";
const config: ConfigTypes = {
environment: "development",
server: {
port: 3000,
cluster: false,
ipHost: true,
https: false,
},
logging: {
enabled: true,
showDetails: true,
},
plugins: {
cors: {
enabled: true,
origins: ["*"],
methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
allowedHeaders: ["Content-Type", "Authorization"],
},
rateLimit: {
enabled: false,
limit: 100,
timeframe: 60000,
},
},
};
export default config;Opções de Configuração 🔧
Environment
environment: "development" | "production" | "test"Define o ambiente da aplicação. Afeta o comportamento de logging e outros recursos específicos do ambiente.
No modo produção, o logging detalhado é automaticamente desabilitado para melhor performance.
Configuração do Servidor
port
port: numberO número da porta em que seu servidor irá escutar. Padrão: 3000
server: {
port: 8080
}cluster
cluster: booleanHabilita modo cluster para utilizar todos os núcleos da CPU. Padrão: false
server: {
cluster: true // Cria um worker para cada núcleo da CPU
}Modo cluster é recomendado para produção mas não necessário para desenvolvimento.
ipHost
ipHost: booleanExibe o endereço IP da rede local na inicialização. Padrão: false
server: {
ipHost: true // Mostra: http://192.168.1.100:3000
}https
https: booleanIndica se o servidor está rodando atrás de HTTPS. Afeta a propriedade req.protocol. Padrão: false
Configuração de Logging 📝
enabled
enabled: booleanHabilita/desabilita logging de requisições. Padrão: true
showDetails
showDetails: booleanMostra informações detalhadas de requisição/resposta incluindo:
- Método e caminho da requisição
- Código de status da resposta
- Tempo de resposta
- Corpo da requisição (em desenvolvimento)
logging: {
enabled: true,
showDetails: true
}Exemplo de saída:
→ POST /api/users 201 Created (15ms)Plugin CORS 🌐
Configure Cross-Origin Resource Sharing para sua API.
enabled
enabled: booleanHabilita/desabilita plugin CORS. Padrão: false
origins
origins: string | string[]Origens permitidas para requisições CORS.
cors: {
enabled: true,
origins: ["https://example.com", "https://app.example.com"]
// ou permitir todas: origins: ["*"]
}methods
methods: string | string[]Métodos HTTP permitidos.
cors: {
methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]
}allowedHeaders
allowedHeaders: string | string[]Cabeçalhos de requisição permitidos.
cors: {
allowedHeaders: ["Content-Type", "Authorization", "X-Requested-With"]
}Plugin Rate Limiting 🛡️
Proteja sua API de abusos com rate limiting integrado.
enabled
enabled: booleanHabilita/desabilita rate limiting. Padrão: false
limit
limit: numberNúmero máximo de requisições por período de tempo.
rateLimit: {
enabled: true,
limit: 100 // 100 requisições por período
}timeframe
timeframe: numberPeríodo de tempo em milissegundos.
rateLimit: {
limit: 100,
timeframe: 60000 // 100 requisições por minuto
}Quando o limite é excedido, o servidor responde com 429 Too Many Requests
Configuração Específica por Ambiente 🌍
Use variáveis de ambiente para diferentes ambientes de deploy:
import type { ConfigTypes } from "azurajs/config";
const isDev = process.env.NODE_ENV !== "production";
const port = process.env.PORT ? parseInt(process.env.PORT) : 3000;
const config: ConfigTypes = {
environment: isDev ? "development" : "production",
server: {
port,
cluster: !isDev, // Habilita cluster apenas em produção
ipHost: isDev, // Mostra IP apenas em desenvolvimento
https: !isDev,
},
logging: {
enabled: true,
showDetails: isDev, // Logs detalhados apenas em desenvolvimento
},
plugins: {
cors: {
enabled: true,
origins: isDev
? ["*"]
: ["https://seudominio.com"],
},
rateLimit: {
enabled: !isDev, // Rate limit apenas em produção
limit: 100,
timeframe: 60000,
},
},
};
export default config;Configuração JSON 📋
Você também pode usar formato JSON:
{
"environment": "development",
"server": {
"port": 3000,
"cluster": false
},
"logging": {
"enabled": true,
"showDetails": true
}
}Configuração YAML 📄
Ou formato YAML:
environment: development
server:
port: 3000
cluster: false
logging:
enabled: true
showDetails: trueAcessando Configuração em Runtime 🔍
Você pode acessar a configuração na sua aplicação:
const app = new AzuraClient();
const config = app.getConfig();
console.log(`Porta do servidor: ${config.server?.port}`);
console.log(`Ambiente: ${config.environment}`);Exemplo de Configuração Completa 📚
Aqui está uma configuração completa pronta para produção:
import type { ConfigTypes } from "azurajs/config";
const config: ConfigTypes = {
environment: "production",
server: {
port: 8080,
cluster: true,
ipHost: false,
https: true,
},
logging: {
enabled: true,
showDetails: false,
},
plugins: {
cors: {
enabled: true,
origins: [
"https://seudominio.com",
"https://app.seudominio.com"
],
methods: ["GET", "POST", "PUT", "DELETE", "PATCH"],
allowedHeaders: [
"Content-Type",
"Authorization",
"X-API-Key"
],
},
rateLimit: {
enabled: true,
limit: 1000,
timeframe: 60000, // 1000 requisições por minuto
},
},
};
export default config;