AzuraJS Logo
AzuraJSFramework
v2.2 Beta

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:

azura.config.ts
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: number

O número da porta em que seu servidor irá escutar. Padrão: 3000

server: {
  port: 8080
}

cluster

cluster: boolean

Habilita 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: boolean

Exibe 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: boolean

Indica se o servidor está rodando atrás de HTTPS. Afeta a propriedade req.protocol. Padrão: false

Configuração de Logging 📝

enabled

enabled: boolean

Habilita/desabilita logging de requisições. Padrão: true

showDetails

showDetails: boolean

Mostra 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: boolean

Habilita/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: boolean

Habilita/desabilita rate limiting. Padrão: false

limit

limit: number

Número máximo de requisições por período de tempo.

rateLimit: {
  enabled: true,
  limit: 100  // 100 requisições por período
}

timeframe

timeframe: number

Perí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:

azura.config.ts
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:

azura.config.json
{
  "environment": "development",
  "server": {
    "port": 3000,
    "cluster": false
  },
  "logging": {
    "enabled": true,
    "showDetails": true
  }
}

Configuração YAML 📄

Ou formato YAML:

azura.config.yaml
environment: development
server:
  port: 3000
  cluster: false
logging:
  enabled: true
  showDetails: true

Acessando 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:

azura.config.ts
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;

Próximos Passos 📖

On this page