API RESTful desenvolvida para a Global Solution 2025/2 da FIAP, focada no tema "O Futuro do Trabalho".
Esta API implementa uma arquitetura híbrida de banco de dados (MongoDB + Oracle) para gerir vagas de emprego e candidaturas, cumprindo os requisitos de múltiplas disciplinas.
- (Req 1) Boas Práticas REST:
- Uso correto de verbos HTTP e Status Codes.
- HATEOAS: Endpoint
GET /api/v1/vagaretorna linksself,updateedelete. - Paginação: Implementada no
GET /api/v1/vaga.
- (Req 2) Monitoramento e Observabilidade:
- Health Check: Endpoint em
/health. - Logging: Logs estruturados com Serilog (Console e ficheiro).
- Tracing: Traces HTTP com OpenTelemetry.
- Health Check: Endpoint em
- (Req 3) Versionamento da API:
- Versionamento via URL (
/api/v1/...) implementado.
- Versionamento via URL (
- (Req 4) Persistência (Híbrida):
- MongoDB (NoSQL): Usado para
Vagas,CandidatoseCandidaturas(leitura rápida para a API). - Oracle (Relacional) com EF Core: Usado para gerir
CandidatoseCandidaturasvia Migrations.
- MongoDB (NoSQL): Usado para
- (Req 5) Testes Automatizados:
- Testes unitários com xUnit e Moq para
VagaService.
- Testes unitários com xUnit e Moq para
- (Req 1) Modelagem Oracle: Tabelas
TB_CANDIDATOeTB_CANDIDATURAcriadas via EF Core Migrations. - (Req 2) PL/SQL:
PROC_INSERT_VAGAé chamada peloVagaService.TRG_AUDIT_VAGAimplementada para auditoria.
- (Req 5) Integração Oracle -> MongoDB: A API implementa esta integração ao salvar dados da
Vagatanto no Oracle (via Procedure) como no MongoDB (via Repositório).
-
Pré-requisitos:
- .NET 9 SDK
- Docker
-
Iniciar os Bancos (Docker):
# Iniciar o MongoDB docker run -d -p 27017:27017 --name includia-mongo mongo # Iniciar o Oracle XE docker run -d -p 1521:1521 -e ORACLE_PASSWORD=admin --name includia-oracle gvenzl/oracle-xe
-
Configurar o Oracle:
- Ligue-se ao
localhost:1521(User:system, Pass:admin, SID:XEPDB1). - Execute o script SQL (fornecido acima) para criar a
TB_VAGA,PROC_INSERT_VAGA, etc.
- Ligue-se ao
-
Executar a API (Terminal):
# Na pasta IncludIA.Api dotnet run -
Acesso (Porta 5201):
- Swagger UI:
http://localhost:5201/swagger - Health Check:
http://localhost:5201/health
- Swagger UI: