Repositório possuí projeto desenvolvido no período que estive na Trybe, abordando os conceitos de API Rest com CRUD completo em TypeScript, com utilização da ODM Mongoose, além de construir o projeto de acordo com o paradigma de orientação a objetos (POO) e SOLID. Docker para rodar o node e mongodb. Utilizando a arquitetura MSC.
Para testar a abordagem foram usados testes via Mocha, Chai, Sinon, com abordagem variando entre TDD e BDD;
- Este é um projeto desenvolvido para me ajudar a aprender
TypeScript
,MongoDB
eMongoose
; - Segundo projeto usando
MongoDB
; - Primeiro projeto usando
Mongoose
; - Utilizei o Cliente Rest
Thunder Client
, como extensão, para visualizar o retorno do meu acesso.
Para este projeto, foram aplicados os princípios de Programação Orientada a Objetos (POO) para a construção de uma API com CRUD para gerenciar uma concessionária de veículos. Em TypeScript, utilizando o banco de dados MongoDB através do framework do Mongoose.
-
Clone o repo:
git clone git@github.com:Ludson96/project-car-shop.git
-
Entre na pasta do repositório que você acabou de clonar:
cd project-car-shop
-
Instale as dependências e inicialize o projeto:
npm install
-
Rode os serviços
node
edb
com o comando, através do docker:docker-compose up -d
Abaixo você pode conferir um detalhamento dos endpoints utilizados no projeto. Para realizar as requisições HTTP e consultar o comportamento de cada endpoint, você pode utilizar a extensão Thunder Client.
ℹ️ Para todos os endpoints que exijam o id dos carros e motos, atente-se que o id é um
ObjectId
. Saiba mais sobre ObjectId aqui.
Cars
- Retorna todos os carros registrados no banco de dados.
- URL:
http://localhost:PORT/cars
- Adiciona um novo carro ao banco de dados.
- URL:
http://localhost:PORT/cars
- O corpo da requisição deve seguir o formato abaixo:
{
"model": "Marea",
"year": 2002,
"color": "Black",
"status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
"buyValue": 15.990,
"doorsQty": 4,
"seatsQty": 5
}
- Retorna o carro cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/cars/634852326b35b59438fbea2f
- Atualiza o carro cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/cars/634852326b35b59438fbea2f
- O corpo da requisição deve seguir o formato abaixo:
{
"model": "Marea",
"year": 1992,
"color": "Red",
"status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
"buyValue": 12.000,
"doorsQty": 2,
"seatsQty": 5
}
- Remove do banco de dados o carro cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/cars/634852326b35b59438fbea2f
Motorcycles
- Retorna todas as motos registradas no banco de dados.
- URL:
http://localhost:PORT/motorcycles
- Adiciona uma nova moto ao banco de dados.
- URL:
http://localhost:PORT/motorcycles
- O corpo da requisição deve seguir o formato abaixo:
{
"model": "Honda Cb 600f Hornet",
"year": 2005,
"color": "Yellow",
"status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
"buyValue": 30.000,
"category": "Street", // Valores aceitos: "Street", "Custom" ou "Trail"
"engineCapacity": 600
}
- Retorna a moto cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/motorcycles/634852326b35b59438fbea2f
- Atualiza a moto cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/motorcycles/634852326b35b59438fbea2f
- O corpo da requisição deve seguir o formato abaixo:
{
"model": "Honda Cb 600f Hornet",
"year": 2014,
"color": "Red",
"status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
"buyValue": 45.000,
"category": "Street", // Valores aceitos: "Street", "Custom" ou "Trail"
"engineCapacity": 600
}
- Remove do banco de dados a moto cujo id foi passado na URL.
- Exemplo de URL:
http://localhost:PORT/motorcycles/634852326b35b59438fbea2f
docker-compose.yml
fornecidos pela Trybe.