Esta API expõe dados de clubes e jogadores, com operacoes de consulta e manutencao de jogadores. O projeto usa arquitetura em camadas para separar responsabilidades:
- Controller: recebe a requisicao HTTP e monta a resposta
- Service: aplica regras de negocio
- Repository: leitura e escrita em arquivos JSON
- Utils: padronizacao de respostas HTTP
- Node.js
- Express
- TypeScript
- tsx (execucao em desenvolvimento)
- tsup (build para distribuicao)
- cors
src/
app.ts
server.ts
routes.ts
controllers/
services/
repositories/
models/
data/
utils/
- A rota em
src/routes.tsrecebe a chamada. - O controller correspondente em
src/controllersprocessa parametros/body. - O service em
src/servicesaplica validacoes e regras. - O repository em
src/repositoriesacessa os arquivos JSON emsrc/data. - O helper em
src/utils/http-helper.tsretorna status e body padronizados.
Base URL: http://localhost:<PORT>/api
- GET
/players: lista todos os jogadores - GET
/players/:id: busca jogador por id - POST
/players: cria um novo jogador - PATCH
/players/:id: atualiza estatisticas do jogador - DELETE
/players/:id: remove jogador por id
- GET
/clubs: lista todos os clubes
router.get("/players", PlayerController.getPlayer)router.post("/players", PlayerController.postPlayer)router.delete("/players/:id", PlayerController.deletePlayer)router.patch("/players/:id", PlayerController.updatePlayer)router.get("/players/:id", PlayerController.getPlayerById)router.get("/clubs", ClubController.getClubs)
Arquivo: src/controllers/players-controller.ts
getPlayer(req, res)getPlayerById(req, res)postPlayer(req, res)deletePlayer(req, res)updatePlayer(req, res)
Arquivo: src/controllers/clubs-controllers.ts
getClubs(req, res)
Arquivo: src/services/players-service.ts
getPlayerService()getPlayerByIdService(id)createPlayerService(player)deletePlayerService(id)updatePlayerService(id, statistics)
Arquivo: src/services/clubs-service.ts
getClubsService()
Arquivo: src/repositories/players-repository.ts
findAllPlayers()findPlayerById(id)insertPlayer(player)deletePlayer(id)findAndUpdatePlayer(id, statistics)
Arquivo: src/repositories/clubs-repository.ts
findAllClubs()
Arquivo: src/utils/http-helper.ts
ok(data)-> 200created(data)-> 201noContent(data)-> 204badRequest(data)-> 400notFound(data)-> 404
- Instale as dependencias:
npm install- Crie um arquivo
.envna raiz com:
PORT=3000- Rode em desenvolvimento:
npm run start:devOpcional (modo watch):
npm run start:watchnpm run start:dev: executa a API com tsxnpm run start:watch: executa com recarregamento automaticonpm run dist: gera build com tsupnpm run start:dist: gera build e executa versao compilada
- Os dados sao persistidos em arquivos locais JSON:
src/data/players.jsonsrc/data/clubs.json
- Esta API nao usa banco de dados relacional/noSQL neste momento.
- A aplicacao usa CORS e parse de JSON via Express.