O Car Shop é uma API que gerencia uma concessionária de veículos.
Trata-se de uma API TypeScript na arquitetura MSC, aplicando os pilares de POO e utilizando o ODM Mongoose para se conectar com um banco de dados MongoDB.
Nesse projeto, fui capaz de:
- Aplicar os pilares da Programação Orientada a Objetos (POO) e SOLID: Herança, Abstração, Encapsulamento e Polimorfismo;
- Desenvolver uma API REST utilizando a arquitetura de software MSC (Model-Service-Controller);
- Exercitar a criação e utilização de Interfaces;
- Implementar, em TypeScript: Classes, Instâncias, Atributos, Métodos e Objetos;
- Aplicar os conhecimentos de MongoDB e Typescript para criar uma API com CRUD;
- Utilizar o framework Express, e a ODM Mongoose;
- Desenvolver testes unitários com 100% de cobertura, utilizando Chai, Mocha e Sinon;
- Clone o repositório
git@github.com:trkotovicz/mongoose-car-shop.git
- Na raíz do repositório rode o comando
docker-compose up -d
- Entre o terminal do container criado
docker exec -it car_shop bash
- Instale as dependências do projeto com
npm install
- Inicie a aplicação dentro do container
npm start
O servidor vai estar rodando na porta local 3000 (http://localhost:3000).
Utilize o cliente de requisições HTTP de sua preferência para fazer as requisições.
POST /cars
Nessa rota você pode cadastrar um novo carro.
Para isso, utilize o formato abaixo no body da requisição:
{
"model": "Ferrari Maranello",
"year": 1963,
"color": "red",
"buyValue": 3500000,
"seatsQty": 2,
"doorsQty": 2
}
http://localhost:3000/cars
GET /cars
Esse endpoint retorna uma lista com todos os carros cadastrados.
http://localhost:3000/cars
GET /cars/id
Esse endpoint retorna um carro específico através de seu id.
Para isso, substitua o id
do endpoint, pelo id do carro que você deseja buscar.
http://localhost:3000/cars/id
PUT /cars/id
Esse endpoint é responsável pela alteração de um carro específico.
Para isso, substitua o id
do endpoint, pelo id do carro que você deseja alterar.
O corpo da requisição deve ter o seguinte modelo:
{
"model": "Fiat Uno",
"year": 1963,
"color": "blue",
"buyValue": 3500,
"seatsQty": 4,
"doorsQty": 4
}
http://localhost:3000/cars/id
DELETE /cars/id
Esse endpoint deleta um carro específico através de seu id.
Para isso, substitua o id
do endpoint, pelo id do carro que você deseja excluir.
http://localhost:3000/cars/id
POST /motorcycles
Nessa rota você pode cadastrar uma motocicleta nova.
Para isso, utilize o formato abaixo no body da requisição:
{
"model": "Honda CG Titan 125",
"year": 1963,
"color": "red",
"buyValue": 3500,
"category": "Street",
"engineCapacity": 125
}
http://localhost:3000/motorcycles
GET /motorcycles
Esse endpoint retorna uma lista com todas as motos cadastradas.
http://localhost:3000/motorcycles
GET /motorcycles/id
Esse endpoint retorna uma moto específica através de seu id.
Para isso, substitua o id
do endpoint, pelo id da motocicleta que você deseja buscar.
http://localhost:3000/motorcycles/id
PUT /motorcycles/id
Esse endpoint é responsável pela alteração de uma moto específica.
Para isso, substitua o id
do endpoint, pelo id da motocicleta que você deseja alterar.
O corpo da requisição deve ter o seguinte modelo:
{
"model": "Honda CG Titan 125",
"year": 1963,
"color": "black",
"buyValue": 3500,
"category": "Street",
"engineCapacity": 125
}
http://localhost:3000/motorcycles/id
DELETE /motorcycles/id
Esse endpoint deleta uma motocicleta específica através de seu id.
Para isso, substitua o id
do endpoint, pelo id da moto que você deseja excluir.
http://localhost:3000/motorcycles/id
Projeto desenvolvido por Thais R Kotovicz.