70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
// 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());
|
|
|
|
/**
|
|
* Logger
|
|
*/
|
|
app.use((req, res, next) => {
|
|
logger.info(`Requisição recebida: ${req.method} ${req.originalUrl} - IP: ${req.ip}`);
|
|
next();
|
|
});
|
|
|
|
/**
|
|
* Rotas
|
|
*/
|
|
app.use('/api', routes);
|
|
|
|
/**
|
|
* Tratamento de erros
|
|
*/
|
|
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.');
|
|
});
|
|
|
|
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.
|
|
*/ |