Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

API Node.js + Express + TypeScript

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

Tecnologias

  • Node.js
  • Express
  • TypeScript
  • tsx (execucao em desenvolvimento)
  • tsup (build para distribuicao)
  • cors

Estrutura do projeto

src/
  app.ts
  server.ts
  routes.ts
  controllers/
  services/
  repositories/
  models/
  data/
  utils/

Fluxo de requisicao

  1. A rota em src/routes.ts recebe a chamada.
  2. O controller correspondente em src/controllers processa parametros/body.
  3. O service em src/services aplica validacoes e regras.
  4. O repository em src/repositories acessa os arquivos JSON em src/data.
  5. O helper em src/utils/http-helper.ts retorna status e body padronizados.

Endpoints e metodos HTTP

Base URL: http://localhost:<PORT>/api

Jogadores

  • 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

Clubes

  • GET /clubs: lista todos os clubes

Metodos usados no codigo

Rotas (src/routes.ts)

  • 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)

Controllers

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)

Services

Arquivo: src/services/players-service.ts

  • getPlayerService()
  • getPlayerByIdService(id)
  • createPlayerService(player)
  • deletePlayerService(id)
  • updatePlayerService(id, statistics)

Arquivo: src/services/clubs-service.ts

  • getClubsService()

Repositories

Arquivo: src/repositories/players-repository.ts

  • findAllPlayers()
  • findPlayerById(id)
  • insertPlayer(player)
  • deletePlayer(id)
  • findAndUpdatePlayer(id, statistics)

Arquivo: src/repositories/clubs-repository.ts

  • findAllClubs()

Helpers HTTP

Arquivo: src/utils/http-helper.ts

  • ok(data) -> 200
  • created(data) -> 201
  • noContent(data) -> 204
  • badRequest(data) -> 400
  • notFound(data) -> 404

Como executar

  1. Instale as dependencias:
npm install
  1. Crie um arquivo .env na raiz com:
PORT=3000
  1. Rode em desenvolvimento:
npm run start:dev

Opcional (modo watch):

npm run start:watch

Scripts disponiveis

  • npm run start:dev: executa a API com tsx
  • npm run start:watch: executa com recarregamento automatico
  • npm run dist: gera build com tsup
  • npm run start:dist: gera build e executa versao compilada

Observacoes

  • Os dados sao persistidos em arquivos locais JSON:
    • src/data/players.json
    • src/data/clubs.json
  • Esta API nao usa banco de dados relacional/noSQL neste momento.
  • A aplicacao usa CORS e parse de JSON via Express.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages