sothis-contratacao-api/src/app.js

70 lines
2.3 KiB
JavaScript
Raw Normal View History

// Ponto de entrada para a API
const loadEnv = require('./shared/config/environment.js');
loadEnv();
const express = require('express');
const cors = require('cors');
const routes = require('./routes/routes.js');
const logger = require('./shared/utils/logger.js');
const app = express();
app.set('trust proxy', 1);
const PORT = process.env.PORT || 3000;
/**
* CORS
*/
app.use(cors({
origin: ['https://sothis.com.br', 'https://bandalarga.srv.br'],
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
app.use(express.json());
2025-11-24 16:13:35 -03:00
/**
* Logger
*/
2025-11-24 16:13:35 -03:00
app.use((req, res, next) => {
logger.info(`Requisição recebida: ${req.method} ${req.originalUrl} - IP: ${req.ip}`);
next();
2025-11-24 16:13:35 -03:00
});
/**
* Rotas
*/
app.use('/api', routes);
/**
* Tratamento de erros
*/
2025-11-24 16:13:35 -03:00
app.use((err, req, res, next) => {
logger.error(`Erro não tratado: ${err.message}`, {
stack: err.stack,
url: req.originalUrl,
method: req.method,
ip: req.ip
});
res.status(500).send('Ocorreu um erro interno no servidor.');
2025-11-24 16:13:35 -03:00
});
app.listen(PORT, () => {
logger.info(`🚀 Servidor API rodando na porta ${PORT} em modo ${process.env.NODE_ENV}`);
});
/*
DESCRIÇÃO:
Este arquivo é o ponto de entrada principal (entry point) da aplicação. Ele é responsável por inicializar e configurar o servidor Express.
FLUXO:
1. Carrega as variáveis de ambiente a partir do arquivo `.env` utilizando a função `loadEnv`.
2. Importa as dependências necessárias, como o `express` para o servidor, `routes` para o roteamento e `logger` para os logs.
3. Cria uma instância do aplicativo Express.
4. Define a porta do servidor, utilizando a variável de ambiente `PORT` ou o valor padrão `3000`.
5. Configura o middleware `express.json()` para permitir que a API aceite e interprete corpos de requisição no formato JSON.
6. Associa as rotas importadas de `./routes/routes.js` ao prefixo `/api`. Todas as rotas definidas nesse arquivo serão acessíveis a partir de `/api/...`.
7. Inicia o servidor para escutar na porta definida.
8. Registra um log informativo quando o servidor é iniciado com sucesso, indicando a porta e o ambiente de execução (`development`, `production`, etc.).
Este arquivo é o coração da API, orquestrando a configuração inicial e o roteamento de todas as requisições recebidas.
*/