Desafio para vaga de estágio na Driva Tecnologia
Utilizado para melhores práticas de tipagem de código e prevenção de bugs por conta da natureza selvagem do Javascript
Utilizado para padronizar a estilização do código
Utilizado para adicionar mais funcionalidade ao ESLint
Utilizado para dar restart no servidor quando arquivos forem modificados
Configura path mapping no typescript
Framework para rodar um server HTTP no Nodejs
Biblioteca para fazer requisições HTTP assíncronas
cors:
Middleware para configurar headers CORS no Express
Configura path mapping no node
O código fonte fica dentro da pasta "src", os outros arquivos são para configuração.
Primeiro, o arquivo principal: aqui fica o código que roda o servidor do Express e configura as rotas.
src/server.ts
Esse arquivo contém apenas algum setup para o Express:
src/server-config.ts
Esse diretório contém os erros customizados que serão utilizados dentro da aplicação:
src/errors
Aqui ficam os controladores com os requisitos do desafio:
src/controllers
Adicionalmente, os controladores utilizam algumas interfaces para desacoplar um pouco o código:
src/controllers/interfaces
Os adaptadores de interfaces da aplicação ficam aqui:
src/adapters
Funções helper de qualquer natureza também têm seu próprio diretório:
src/helpers
O código de infraestrutura também está separado:
src/infra
E por último, os modelos de dados:
src/models
Para rodar o projeto é necessário ter o Node.js versão LTS instalado na máquina.
Para clonar via SSH é só usar o comando:
git clone [email protected]:Jackzinho/desafio-driva.git
ou via HTTPS:
git clone https://github.com/Jackzinho/desafio-driva.git
Após clonar o repositório, é preciso instalar as dependências:
npm install
Os comandos a seguir podem ser executados usando Yarn ou npm.
Comando principal para iniciar o servidor:
npm start
Comando para iniciar o servidor em modo de desenvolvimento:
npm run dev
Comando para fazer a build do projeto:
npm run build
Comando para utilizar ESLint no projeto e consertar erros de estilo:
npm run lint
Uma rota que retorna uma resposta amigável :)
-
URL
/hello
-
Method:
GET
-
Success Response:
200 Ok - text/plain "World"
-
Sample Call:
curl http://localhost:3333/hello
Uma rota que retorna o montante da soma de um vetor de números
-
URL
/soma
-
Method:
POST
-
Body
{ "numbers": [2, 2] }
-
Success Response:
200 Ok - application/json { "result": 4 }
-
Sample Call:
curl -X POST http://localhost:3333/soma -H 'Content-Type: application/json' -d '{ "numbers": [2, 5, 9] }'
Uma rota que retorna o nome dos filmes de Star Wars
-
URL
/starwars/films
-
Method:
GET
-
Success Response:
200 Ok - application/json [ { "title": "Star Wars: The Phantom Menace", "episodeNumber": 1 }, ]
-
Sample Call:
curl http://localhost:3333/starwars/films