
## API Gateway

Este repositório contém a aplicação de **API Gateway** desenvolvida como parte do Trabalho de Conclusão de Curso de Tecnologia em Análise e Desenvolvimento de Sistemas - UFPR 2025/01.

O objetivo do gateway é centralizar e encaminhar as requisições HTTP para os microserviços correspondentes, atuando como ponto único de entrada da aplicação, com suporte a controle de headers, logging, segurança e manipulação de respostas.

## Tecnologias Utilizadas

- **Node.js + Express** – Servidor principal do gateway  
- **express-http-proxy** – Proxy reverso para comunicação com microserviços  
- **Morgan** – Middleware de logging  
- **Helmet** – Middleware de segurança HTTP  
- **CORS + Body Parser + Cookie Parser** – Utilitários para controle de requisições  

## Como Funciona

- O gateway escuta na porta `3000` e redireciona as requisições para os microserviços conforme o prefixo da URL.
- Os seguintes caminhos são interceptados:
  - `/api/auth/**` → Microserviço de autenticação (porta 8080)
  - `/api/university/**` → Microserviço universitário (porta 8081)
  - `/api/cluster/**` → Microserviço de clusterização (porta 8082)
- Os headers da requisição, como `Authorization`, são preservados e repassados corretamente aos serviços.
- As respostas podem ser inspecionadas e modificadas, como no caso do login, onde o token é logado no console.

## Inicialização do Serviço

### 1. Instale as dependências:

No diretório do gateway, execute:

```
yarn
```

### 2. Inicie o servidor:

```
yarn start
```

A aplicação será iniciada na porta **3000**, com o seguinte comportamento:

- Requisições para `/api/auth/**` são encaminhadas para `http://localhost:8080`
- Requisições para `/api/university/**` são encaminhadas para `http://localhost:8081`
- Requisições para `/api/cluster/**` são encaminhadas para `http://localhost:8082`

## Estrutura do Código

- `app.js`  
  Arquivo principal que configura os middlewares, define os proxies para os microserviços e inicia o servidor HTTP.
