Este projeto consiste em uma API RESTful desenvolvida com Node.js, Express.js e MongoDB, que permite o cadastro e listagem de veículos (carros e motocicletas)
- Retorna uma lista de todos os carros registrados.
- Retorna o carro com o ID especificado.
- Cria um novo carro com os dados fornecidos.
- Atualiza o carro com o ID especificado com os dados fornecidos.
- Deleta um carro com o ID especificado
- Retorna uma lista de todas as motocicletas registradas.
- Cria uma nova motocicleta com os dados fornecidos.
- Retorna uma motocicleta com o ID especificado.
- Atualiza uma motocicleta com o ID especificado com os dados fornecidos.
- Deleta uma motocicleta com o ID especificado
Para executar este projeto, é necessário ter o Node.js e o MongoDB instalados.
# Clonar Projeto
$ git clone https://github.com/pedroygor/car-shop.git
# Entrar no diretório
cd car-shop
# Instalar dependências
$ npm install
# Subir o docker
$ docker-compose up -d
# Visualizar terminal
$ docker exec -it car_shop bash
O projeto conta com testes unitários que cobrem pelo menos 80% da camada Service.
POST /cars
Parâmetro | Tipo | Descrição |
---|---|---|
model year color status buyValue doorsQty seatsQty |
string number string boolean number number number |
Atenção: o campo status não é obrigatório |
Exemplo de estrutura do body
{
"model": "Marea",
"year": 2002,
"color": "Black",
"status": true,
"buyValue": 15.990,
"doorsQty": 4,
"seatsQty": 5
}
A resposta com status 201
{
"id": "6348513f34c397abcad040b2",
"model": "Marea",
"year": 2002,
"color": "Black",
"status": true,
"buyValue": 15.990,
"doorsQty": 4,
"seatsQty": 5
}
GET /cars
Resposta com status 200
[
{
"id": "634852326b35b59438fbea2f",
"model": "Marea",
"year": 2002,
"color": "Black",
"status": true,
"buyValue": 15.99,
"doorsQty": 4,
"seatsQty": 5
},
{
"id": "634852326b35b59438fbea31",
"model": "Tempra",
"year": 1995,
"color": "Black",
"buyValue": 39,
"doorsQty": 2,
"seatsQty": 5
}
]
GET /cars/:id
Resposta com status 200
{
"id": "634852326b35b59438fbea2f",
"model": "Marea",
"year": 2002,
"color": "Black",
"status": true,
"buyValue": 15.99,
"doorsQty": 4,
"seatsQty": 5
}
Casos de falha
- Ao tentar passar um ID inexistente no banco de dados - Status Code
404
{ "message": "Car not found" }
- Ao passar um ID inválido - Status Code
422
{ "message": "Invalid mongo id" }
PUT /cars/:id
Exemplo de estrutura do body
{
"model": "Marea",
"year": 1992,
"color": "Red",
"status": true,
"buyValue": 12.000,
"doorsQty": 2,
"seatsQty": 5
}
Resposta com status 200
{
"id": "634852326b35b59438fbea2f",
"model": "Marea",
"year": 1992,
"color": "Red",
"status": true,
"buyValue": 12.000,
"doorsQty": 2,
"seatsQty": 5
}
Casos de falha
- Ao tentar passar um ID inexistente no banco de dados - Status Code
404
{ "message": "Car not found" }
- Ao passar um ID inválido - Status Code
422
{ "message": "Invalid mongo id" }
DELETE /cars/:id
Resposta com status 204
{}
Resposta com status 404
{
"message": "Car not found"
}
POST /motorcycles
Parâmetro | Tipo | Descrição |
---|---|---|
model year color status buyValue category engineCapacity |
string number string boolean number string number |
Atenção: o campo status não é obrigatório |
Exemplo de estrutura do body
{
"model": "Honda Cb 600f Hornet",
"year": 2005,
"color": "Yellow",
"status": true,
"buyValue": 30.000,
"category": "Street",
"engineCapacity": 600
}
A resposta com status 201
{
"id": "6348513f34c397abcad040b2",
"model": "Honda Cb 600f Hornet",
"year": 2005,
"color": "Yellow",
"status": true,
"buyValue": 30.000,
"category": "Street",
"engineCapacity": 600
}
GET /motorcycles
Resposta com status 200
[
{
"id": "634852326b35b59438fbea2f",
"model": "Honda Cb 600f Hornet",
"year": 2005,
"color": "Yellow",
"status": true,
"buyValue": 30.000,
"category": "Street",
"engineCapacity": 600
},
{
"id": "634852326b35b59438fbea31",
"model": "Honda Cbr 1000rr",
"year": 2011,
"color": "Orange",
"status": true,
"buyValue": 59.900,
"category": "Street",
"engineCapacity": 1000
}
]
GET /motorcycles/:id
Resposta com status 200
{
"id": "634852326b35b59438fbea31",
"model": "Honda Cbr 1000rr",
"year": 2011,
"color": "Orange",
"status": true,
"buyValue": 59.900,
"category": "Street",
"engineCapacity": 1000
}
Casos de falha
- Ao tentar passar um ID inexistente no banco de dados - Status Code
404
{ "message": "Motorcycle not found" }
- Ao passar um ID inválido - Status Code
422
{ "message": "Invalid mongo id" }
PUT /motorcycles/:id
Exemplo de estrutura do body
{
"model": "Honda Cb 600f Hornet",
"year": 2014,
"color": "Red",
"status": true,
"buyValue": 45.000,
"category": "Street",
"engineCapacity": 600
}
Resposta com status 200
{
"id": "634852326b35b59438fbea2f",
"model": "Honda Cb 600f Hornet",
"year": 2014,
"color": "Red",
"status": true,
"buyValue": 45.000,
"category": "Street",
"engineCapacity": 600
}
Casos de falha
- Ao tentar passar um ID inexistente no banco de dados - Status Code
404
{ "message": "Motorcycle not found" }
- Ao passar um ID inválido - Status Code
422
{ "message": "Invalid mongo id" }
DELETE /motorcycles/:id
Resposta com status 204
{}
Resposta com status 404
{
"message": "Motorcycle not found"
}